Heim  >  Artikel  >  Web-Frontend  >  jquery löst das domänenübergreifende Zugriffsproblem des Clients_jquery

jquery löst das domänenübergreifende Zugriffsproblem des Clients_jquery

WBOY
WBOYOriginal
2016-05-16 16:22:13960Durchsuche

Der clientseitige „domänenübergreifende Zugriff“ war schon immer ein Problem, mit Hilfe von jQuery wurden seit jQuery-1.2 domänenübergreifende Probleme gelöst. Da ich im Projekt auf domänenübergreifende Probleme gestoßen bin, nutzte ich diese Gelegenheit, um mich nach den domänenübergreifenden Problemen zu erkundigen, relevante Informationen und meine eigene Praxis zu konsultieren und schließlich die domänenübergreifenden Probleme zu lösen. Notieren Sie es als Referenz.

jQuery.ajax() unterstützt domänenübergreifende Get-Methoden, was tatsächlich mit jsonp erfolgt.

Realer Fall:

Code kopieren Der Code lautet wie folgt:

$.ajax({
async:false,
​​​​​​ URL: 'http://www.mysite.com/demo.do', // Domainübergreifende URL
            Typ: 'GET',
Datentyp: 'jsonp',
               jsonp: 'jsoncallback', //Standardrückruf
Daten: mydata,
Zeitüberschreitung: 5000,
                beforeSend: function(){ //Diese Methode wird im JSONP-Modus nicht ausgelöst. Der Grund kann sein, dass es sich bei der Angabe von dataType als jsonp nicht mehr um ein Ajax-Ereignis
handelt             },
Erfolg: Funktion (JSON) {// Die vordefinierte Callback-Funktion des Clients JQuery. Nach dem erfolgreichen Abrufen von JSON-Daten auf domänenübergreifenden Servern ist diese Callback-Funktion
If(json.actionErrors.length!=0){
alarm(json.actionErrors);
                                                                                                                      genDynamicContent(qsData,type,json);              },
vollständig: function(XMLHttpRequest, textStatus){
                        $.unblockUI({ fadeOut: 10 });              },
​​​​​​ Fehler: function(xhr){
raus, raus, raus, raus, raus, raus, raus, raus, durch, über, über, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so so so so so so so so um so so so, dass um zu to to to to to to to to to to to to to to to to to to to to to to to to to to to mit diese Methode mit dieser Methode Methode Methode Methode Methode Methode zu Methode Methode zu Methode Methode nicht auszulösen
//Fehlerbehandlung anfordern
warning("Anfragefehler (bitte überprüfen Sie den entsprechenden Netzwerkstatus.)");
               }
        });



Hinweis:

Code kopieren Der Code lautet wie folgt: $.getJSON("
http://www.mysite.com/demo.do?name1=" value1 "&callback
=?",
              function(json){ If(json.property name==value){ //Code
ausführen                                                                                                                      });

Bei dieser Methode handelt es sich tatsächlich um eine erweiterte Kapselung der $.ajax({..})-API im obigen Beispiel. Einige der zugrunde liegenden Parameter der $.ajax-API sind gekapselt und nicht sichtbar.

Verwenden Sie auf der Serverseite callback= request.getParameter("callback"), um den jsonp32440980 abzurufen, der später auf der jQuery-Seite zurückgerufen werden soll
Geben Sie dann etwas zurück wie: „jsonp32440980(“ zurückzugebendes JSON-Array „)“; jquery lädt dies dynamisch und ruft es über die Rückrufmethode auf: jsonp32440980 (json array); Dadurch wird der Zweck des domänenübergreifenden Datenaustauschs erreicht
Das grundlegendste Prinzip von JSONP ist: Das dynamische Hinzufügen eines ist konsistent (QQ Space verwendet diese Methode, um einen domänenübergreifenden Datenaustausch zu erreichen). JSONP ist eine Art Skriptinjektionsverhalten (Script-Injection) und birgt daher auch gewisse Sicherheitsrisiken.


Hinweis: jquey unterstützt keine domänenübergreifenden Beiträge.

Dies liegt daran, dass die Verwendung von Post zum dynamischen Generieren von IFrames zwar den Zweck der domänenübergreifenden Post erreichen kann (so hat ein JS-Experte jquery1.2.5 gepatcht), dies jedoch eine relativ extreme Methode ist und nicht empfohlen wird. Man kann auch sagen, dass die domänenübergreifende Zugriffsmethode get legal ist und die Post-Methode aus Sicherheitsgründen als illegal angesehen wird. Es ist besser, nicht als letzten Ausweg zu posten Seite scheint die Aufmerksamkeit von w3c auf sich gezogen zu haben, html5 Der WebSocket-Standard unterstützt den domänenübergreifenden Datenaustausch und soll in Zukunft eine optionale domänenübergreifende Datenaustauschlösung sein.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn