Lassen Sie uns zunächst einige Vorbereitungen treffen. Ansonsten, wenn Sie verstehen, was ich meine, verstehen andere nicht. Auch wenn andere verstehen, wird es immer Menschen geben, die es nicht verstehen. Dann musst du es sagen. Was ich meine ist, dass diese Erklärung getan werden muss. Die Antwort ist ein Muss. Um es jedem zu erleichtern, es zu verstehen.
Wir können Cross-Domänen-Probleme demonstrieren, indem wir zwei Hauptdomain-Namen oder einen Hauptdomänennamen + einen Domain-Namen der zweiten Ebene als Beispiele aufnehmen.
Kunde A.com
Server b.com oder SACOM
AngularJS Version V1.2.25
Die Vorbereitungen wurden sehr gut durchgeführt, und wir haben unseren Herausgeber fast als Subline entlarvt. Ich werde ihm diese gewöhnliche Person nicht sagen.
Jemand hat angeschrien, dass diese Frage schon lange da ist. Was bringt es, es jetzt zu fragen? Könnte es sein, dass Sie die Blumen noch täuschen können? Nun, ich kann die Blumen wirklich offen schreiben. Schauen wir uns die Show an, was wir in diesem Artikel aufführen werden, ist ein vollständiges Cross-Domain-Beispiel.
Lassen Sie uns als nächstes sehen, wie der Client Daten anfordert
Beachten Sie, dass unser Code unter dem Namen der A.com -Domänen geschrieben wurde
<! DocType html> <html Lang = "en" ng-App = "App"> <head> <meta charset = "utf-8"> <title> </title> <script src = "./ Angular.min.js"> </script> <script type = "text/javascript"> var app = Angular.module ('app', 'app', " []); App.Controller ('AppCtrl', ['$ scope', function ($ scope) {$ http ({methode: 'jsonp', url: 'http://www.b.com/test.php?callback=json_callback'.success (Function (orLback'.sucess () (orLback (orLback'.sucess ()/orl (orLback) (orLback'.sucess(function (function (orLback); $ http.jsonp ('http://www.b.com/test.php?callback=json_callback') .success (function (msg) {console.log (msg);});Wir sehen, dass dies eine Cross-Domänen-Anfrage direkt in Form von JSONP ist und der Betrieb genau mit der Cross-Domain-Anforderungsmethode in JQuery übereinstimmt. Beachten Sie, dass unser Rückruf behoben ist, dh json_callback, versuchen Sie, keine Änderungen vorzunehmen
Schauen wir uns an, wie test.php angeforderte Daten auf Server b.com verarbeitet. Hier verwenden wir die native PHP -Methode als Referenz.
$ callback = isset ($ _ GET ['CALLBACK'])? $ _Get ['Callback']: default_callback; exit ($ callback. '('. json_encode ($ data). ')');Schauen wir uns auf die Ergebnisse der Client -Konsole.log -Datensatz zurück
Zu diesem Zeitpunkt haben wir im gesamten Domain erfolgreich angefordert!
Schließlich machen wir eine kleine Zusammenfassung und achten auf die wichtigsten Punkte:
1. Der Parameter hinzugefügt, nachdem die vom Client über Domänen angeforderte URL? Callback = json_callback ist. Der Wert des Parameter -Rückrufs wird als json_callback angegeben. Beachten Sie, dass es geschrieben wird, dh json_callback, keine Änderungen vornehmen. Es fühlt sich so an, als wäre dies eine große Grube. Wenn der Wert des Rückrufs geringfügig geändert wird, muss der Client die Rückruffunktion weltweit definieren und wie kann ich sie für die Verarbeitung an $ Scope weitergeben? Um unnötige Probleme zu vermeiden, bedeutet dies, was es bedeutet, zu tun
2. Schauen Sie sich den Server erneut an. Der Server muss $ callback = $ _get ['callback'] angeben. Erhalten Sie einen Rückruf, und Sie werden auch feststellen, dass der erhaltene Rückruf nicht der Wert des von unserem Kunden geschriebenen Rückrufs ist. Der Client gibt JSON_CALLBACK an, um den internen Mechanismus von AngularJs auszulösen.