Heim  >  Artikel  >  Web-Frontend  >  Was ist domänenübergreifender Ajax-Zugriff?

Was ist domänenübergreifender Ajax-Zugriff?

(*-*)浩
(*-*)浩Original
2019-05-22 19:21:046580Durchsuche

Der domänenübergreifende AJAX-Zugriff bedeutet, dass, wenn ein Benutzer Website A besucht, alle domänenübergreifenden Zugriffsanfragen für Website B an die angegebene Seite von Website A weitergeleitet werden. Das heißt, Ajax fordert eine Webressource an, deren Zieladresse eine nicht lokale Domäne ist (das Protokoll, der Domänenname und der Port sind unterschiedlich), und erhält basierend auf der Antwort externe Anwendungsdaten.

Was ist domänenübergreifender Ajax-Zugriff?

Ajax fordert eine Webressource an, deren Zieladresse eine nicht lokale Domäne ist (das Protokoll, der Domänenname und der Port sind unterschiedlich), und erhält eine externe Anwendung Daten basierend auf der Antwort. Wenn wir beispielsweise Ajax verwenden, um auf öffentliche Dienstschnittstellen wie die Wettervorhersage einer Stadt und die IP-Adresse zuzugreifen, ist domänenübergreifend beteiligt. Wenn wir einen externen Dienst anfordern, verweigert der Browser aus Sicherheitsgründen den autorisierten Zugriff.

Die src-Attribute von script, script und iframe-Tags haben keine domänenübergreifenden Probleme, daher nutzt Ajax domänenübergreifend dies und die Unterstützung von js für JSON. Der externe Dienst muss nur auf Ajax reagieren Anfrage mit einem Stück JS-Code Oder JSON-Daten können von Ajax abgerufen werden.

Aus Sicherheitsgründen kann Client-JS nur xmlhttprequest verwenden, um Anfragen an die Quellwebsite zu senden. Beispielsweise ist es nicht möglich, Daten von test.readlog.cn unter www.readlog.cn anzufordern. Es gibt jedoch viele Lösungen. Lass es uns hier klären.

Lösung 1 Web-Proxy-Methode (auf Server A)

Diese Seite ersetzt die Benutzerseite, um die Interaktion abzuschließen und dadurch entsprechende Ergebnisse zurückzugeben. Diese Lösung kann die meisten der in dieser Phase vorstellbaren domänenübergreifenden Zugriffsprobleme lösen, erfordert jedoch, dass Website A Web-Proxy-Unterstützung bietet. Daher müssen Website A und Website B eng zusammenarbeiten und bei jedem Interaktionsprozess der Server von Website A Die Belastung steigt und der Sitzungsstatus kann nicht im Namen des Benutzers gespeichert werden.

Lösung 2. On-Demand-Methode (auf Server A)

Das Portal von MYMSN verwendet diese Methode, aber bei MYMSN treten keine domänenübergreifenden Zugriffsprobleme auf. Generieren Sie dynamisch neue

innerhalb der Seite Lösung 3. Iframe-Methode (auf Server A)
Ich habe mir einen Beitrag zum domänenübergreifenden Zugriff auf JavaEye angesehen. Er erwähnte, dass er das Problem gelöst hatte das Problem des domänenübergreifenden Zugriffs mit iframe. Es ist zwar möglich, iframe für die Datenübermittlung und -erfassung zu verwenden, aber da das übergeordnete Fenster und das untergeordnete Fenster nicht interagieren können (bei domänenübergreifendem Zugriff wird diese Interaktion abgelehnt), kann der Effekt auf das übergeordnete Fenster nicht abgeschlossen werden.
In die Seite einbetten oder dynamisch einen IFRAME generieren, der auf eine andere Website verweist, und dann können die beiden Webseiten Nachrichten übertragen, indem sie das Anker-Hash-Fragment der anderen ändern. Das Ändern des Anker-Hash-Fragments einer Webseite führt nicht dazu, dass der Browser die Webseite neu lädt, sodass der Status einer Webseite beibehalten wird und die Webseite selbst Änderungen in ihrem Anker-Hash über einen Timer (Timer) erkennen kann Ändern Sie daher den Status Ihres eigenen Anker-Hash-Fragments.

Lösung 4. Lokale Dump-Methode des Benutzers (lokal)
Die Eigenschaften des IE selbst, der mit der Windows-Plattform verbunden ist, bieten uns eine Iframe-basierte Methode, die Speicher zum „Umgehen“ verwendet. „Die Lösung besteht darin, dass Daten zwischen zwei Fenstern über die Windows-Zwischenablage auf dem Client übertragen werden können. Es muss lediglich das Intervall auf der Seite festgelegt werden, die die Daten für die Abfrage empfängt, und das Intervall gelöscht werden, nachdem das Ergebnis erhalten wurde.“ Aufgrund der Plattformunabhängigkeit von FF wird die Zwischenablagemethode nicht unterstützt. Außerdem wurde die Plug-In-Schwachstelle in früheren Versionen von FF behoben, sodass FF die geheime Durchquerung des Speichers nicht abschließen kann. Da FF keine Unterstützung für Dateioperationen bietet (die Datenübertragung über Cookies kann nicht über Domänen hinweg erfolgen), kann diese technische Methode nur im IE verwendet werden.

Lösung 5: (Tatsächlich wird das Problem der Kommunikation mit Server B durch die Verwendung von Iframe auf Server A gelöst)
Das zu lösende Problem: tritt auf, wenn der Benutzer die übermittelt Webseiten-URL (einschließlich Tag, Notizen usw.) an den Lesezeichenserver.
Es gibt mindestens drei Möglichkeiten, URLs zu übermitteln:
1. Melden Sie sich auf der Übermittlungsseite des Lesezeichenservers an und übermitteln Sie die zu erfassende URL über diese Seite an den Server.
2. Installieren Sie das Browser-Plugin und übermitteln Sie die URL über das Plug-in an den Server.
3. Laden Sie das Javascript-Gadget dynamisch vom Lesezeichenserver auf die aktuelle Seite und verwenden Sie es, um die Übermittlungsarbeit abzuschließen.

Die erste Methode ist am einfachsten zu entwickeln, aber sie ist für Benutzer jedes Mal umständlicher, wenn sie sich beim Lesezeichen-Server anmelden müssen, um die Übermittlung abzuschließen. Ich bin mit dem Plug-in nicht vertraut Entwicklung, und die Benutzer sind nicht damit vertraut. Ich mag zu viele Plug-Ins, um meinen Browser zu füllen. Die dritte Methode ist einfach zu entwickeln und vermeidet die Mühe, sich jedes Mal beim Server anzumelden. Deshalb habe ich sie schließlich übernommen. Zusätzlich zum Generieren einer Benutzeroberfläche, über die Benutzer Informationen (URL, Tag, Notizen usw.) eingeben können, muss das dynamisch geladene Javascript-Gadget in der dritten Methode auch die Funktion der Kommunikation mit dem Server abschließen, wenn der Benutzer auf „Senden“ klickt.

Das obige ist der detaillierte Inhalt vonWas ist domänenübergreifender Ajax-Zugriff?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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