it-swarm.com.de

Wie mache ich eine AJAX HTTPS GET-Anforderung mit jQuery

Wie kann ich explizit eine AJAX HTTPS GET-Anfrage mit jQuery erstellen? Ich versuche Folgendes zu tun ... __ Auf einer https-Seite habe ich eine Zeile mit dem Code $.get("/resource"), aber ich erhalte die folgende Fehlermeldung

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.

Warum versucht der Aufruf AJAX, über das HTTP-Protokoll auf die Seite zuzugreifen, wenn die relative Ressource von einer https-Seite stammt? Wenn dies mit der $ .get (url) -Methode standardmäßig geschieht, wie verwende ich jQuery, um eine explizite HTTPS-GET-Anforderung auszuführen? Eine andere Person, die ein ähnliches Problem hatte, konnte sich unter http://forum.jquery.com/topic/jquery-get-ajax-call-on-http-page-to-https-on-same-domain befinden nicht lösen.

jQuery Version ist 1.7.2

19
FearlessFuture

Ich habe das Problem behoben. Es stellte sich heraus, dass ich aufgrund der Art und Weise, wie unsere Django-Site konfiguriert wurde, der Ressource in der Anfrage AJAX einen nachstehenden Schrägstrich hinzufügen musste. Ohne den nachgestellten Schrägstrich würde Django dann Weiterleitung an die URL mit dem nachgestellten Schrägstrich verwenden, wobei eine HTTP-Anforderung anstelle einer HTTPS-Anforderung verwendet wurde.

Kurz gesagt, ich habe $.get("/resource") durch $.get("/resource/") ersetzt.

Vielen Dank. Ich freue mich über all Ihre Hilfe.

43
FearlessFuture

Wenn die Seite, auf der Sie sich befinden, eine https-Seite ist und die Seite .get versucht, auf http zuzugreifen, funktioniert dies aufgrund derselben Herkunft nicht. Sie können den Ajax jedoch nur ausschreiben, anstatt ihn mit .get kurz zu übergeben :) 

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

Obwohl ich vermute, fair zu sein, ist dies immer noch eine Abkürzung für echtes Javascript

9
mituw16

Setzen Sie den Datentyp auf "jsonp", dies hat mir in der Vergangenheit bei Cross-Origin-Anfragen geholfen. 

    $.ajax({
            url: "//www.site.com/resource"
            dataType: "jsonp",
            success: function(data) {
                $(".demo-card").html(data);
            }
    });
2
alphapilgrim

Verwenden Sie einfach RewriteRule in Ihrer .htaccess-Datei mit dem angegebenen Protokoll. Beispiel:

RewriteCond %{REQUEST_URI} .+[^/]$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]
0
Alex S