Comment faire une requête AJAX HTTPS GET en utilisant jQuery

Comment puis-je explicitement faire une requête AJAX HTTPS GET en utilisant jQuery? Je suis en train de faire la suite. Sur une page https, j'ai une ligne avec le code $.get("/resource"), mais j'obtiens l'erreur suivante

XMLHttpRequest cannot load http://www.site.com/resource. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.site.com' is therefore not allowed access.

pourquoi L'appel AJAX tente-t-il d'accéder à la page en utilisant le protocole HTTP si la ressource relative provient d'une page https? Si l' $.la méthode get(url) fait cela par défaut, comment utiliser jQuery pour faire une requête explicite HTTPS GET? Une autre personne, qui avait un problème similaire, à http://forum.jquery.com/topic/jquery-get-ajax-call-on-http-page-to-https-on-same-domain n'a pas pu le résoudre.

<!-La Version jQuery est 1.7.2

17
demandé sur FearlessFuture 2014-01-11 04:35:19

4 réponses

j'ai corrigé le problème. Il s'est avéré qu'en raison de la façon dont notre site Django a été configuré, j'avais besoin d'ajouter une barre oblique à la ressource dans la requête AJAX. Sans le slash, Django serait alors redirection à L'URL avec la barre oblique de queue en utilisant une requête HTTP au lieu d'une requête HTTPS.

En bref, j'ai remplacé $.get("/resource")$.get("/resource/").

je vous Remercie. J'apprécie vraiment votre aide.

38
répondu FearlessFuture 2016-03-22 17:28:58

si la page sur laquelle vous êtes est une page https, et la page .get essaie d'accéder à http, alors cela ne fonctionnera pas à cause de la même origine. Toutefois, vous pouvez simplement écrire l'ajax au lieu de court remise avec .obtenir :)

$.ajax({
    type: "GET", 
    url: "https://someurl"
});

bien que je suppose être juste, c'est encore un court de javascript vrai

8
répondu mituw16 2014-01-11 00:40:50

essayez de configurer le type de données en "jsonp", cela m'a aidé dans le passé avec les requêtes de cross-origin.

    $.ajax({
            url: "//www.site.com/resource"
            dataType: "jsonp",
            success: function(data) {
                $(".demo-card").html(data);
            }
    });
2
répondu alphapilgrim 2015-08-18 00:35:42

il suffit d'utiliser RewriteRule dans votre .fichier htaccess avec le protocole spécifié, par exemple:

RewriteCond %{REQUEST_URI} .+[^/]$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]
0
répondu Alex S 2017-05-30 12:29:59