Heim Web-Frontend js-Tutorial JQuery's JSONP mit Beispielen erklärt

JQuery's JSONP mit Beispielen erklärt

Feb 17, 2025 am 10:34 AM

jQuery's JSONP Explained with Examples

Zusammenfassung der Schlüsselpunkte

  • JSONP (JSON With Padding) erlaubt Cross-Domain-Ajax-Anrufe, wodurch homologe Richtlinien umgehen, die Skripte daran hindern, auf Daten aus verschiedenen Quellen zuzugreifen. Dies erfolgt durch die Rückgabe des Servers, der den Funktionsaufruf enthält, den der Browser interpretieren kann.
  • Während JSONP für das Erhalten von Daten aus verschiedenen Quellen und den Zugriff auf Inhalte für verschiedene Dienste ist, hat es auch einige Einschränkungen. JSONP kann nur Cross-Domain-Anfragen ausführen und muss vom Server explizit unterstützt werden. Es hat auch potenzielle Sicherheitsprobleme, da es Möglichkeiten für Cross-Site-Skriptangriffe (XSS) eröffnet.
  • Andere Lösungen für homologe Richtlinien umfassen die Verwendung von Proxy oder die Implementierung der CORS-Ressourcenfreigabe (Cross-Origin-Ressourcen). Mit dem Proxy können serverseitige Code Cross-Origin-Anforderungen durchführen, während CORS es Browsern ermöglicht, über Domänen hinweg zu kommunizieren, indem ein neuer HTTP-Header für Zugriffskontroll-Owl-Origin in die Antwort aufgenommen wird. Jede Methode hat jedoch ihre eigenen Mängel und Einschränkungen.

Dieser Artikel wurde am 23. Juni 2016 aktualisiert, um Qualitätsprobleme zu lösen. Kommentare zu alten Artikeln wurden gelöscht. Wenn Sie eine webbasierte Anwendung entwickeln und versuchen, Daten aus einer Domäne zu laden, die nicht unter Ihrer Kontrolle liegt .cn/link/0df0dbfc4725c2259dc0bb045e9bf6d2 ' ist daher kein Zugang zulässig. In diesem Artikel werden wir untersuchen, was diesen Fehler verursacht und wie dieses Problem mit JQuery und JSONP gelöst werden kann.

gleiche Ursprungspolitik

Allgemeine Webseiten können mit XMLHTTPrequest-Objekten Daten an Remote-Server senden und empfangen. Die gleichorientierte Richtlinie begrenzt jedoch, was sie ausführen können. Dies ist ein wichtiges Konzept im Browser -Sicherheitsmodell, das feststellt, dass Webbrowser nur Skripte auf Seite A zulassen, um auf Seite B auf Daten zuzugreifen, wenn beide Seiten dieselbe Quelle haben. Die Quelle der Seite wird durch ihre

-Protokolle

, host und Portnummer definiert. Die Quelle dieser Seite lautet beispielsweise "https", "www.sitepoint.com", "80". Die Homogenpolitik ist ein Sicherheitsmechanismus. Es verhindert, dass Skripte Daten aus Ihrer Domain lesen und an ihre Server senden. Ohne dies ist es für eine böswillige Website einfach, Ihre Sitzungsinformationen auf eine andere Website (z. B. Google Mail oder Twitter) zu kriechen und Aktionen in Ihrem Namen auszuführen. Leider verursacht es auch die oben sehen, die wir oben sehen, und verursachen den Entwicklern, die versuchen, legitime Aufgaben zu erledigen, häufig Probleme.

Beispiel für den Fehler

Mal sehen, was nicht funktioniert. Dies ist eine JSON -Datei auf einer anderen Domain, und wir möchten sie mit der GetJson -Methode von JQuery laden.

$.getJSON(
  "http://run.plnkr.co/plunks/v8xyYN64V4nqCshgjKms/data-1.json",
  function(json) { console.log(json); }
);
Nach dem Login kopieren
Nach dem Login kopieren

Wenn Sie die Konsole in Ihrem Browser öffnen und sie ausprobieren, sehen Sie eine Nachricht, die der oben genannten ähnlich ist. Was können wir also tun?

mögliche Lösungen

Zum Glück wird nicht alles von homologen Politiken beeinflusst. Beispielsweise ist es durchaus möglich, ein Bild oder Skript aus einer anderen Domäne in Ihre Seite zu laden. Dies bedeutet, dass wir ein <script> -Tag erstellen, sein src -Merkmal in unserer JSON -Datei festlegen und es in die Seite einfügen können.

var script = $("<script>", {
    src: "http://run.plnkr.co/plunks/v8xyYN64V4nqCshgjKms/data-1.json",
    type: "application/json"
  }
);

$("head").append(script);
Nach dem Login kopieren

Während dies funktioniert, hilft es uns nicht viel, da wir nicht auf die von ihnen enthaltenen Daten zugreifen können.

Anfänger von JSONP

JSONP (im Namen von JSON mit Polsterung) basiert auf dieser Technik und bietet uns eine Möglichkeit, auf die zurückgegebenen Daten zuzugreifen. Es wird implementiert, indem der Server JSON -Daten mit einem Funktionsaufruf ("populär" zurückgibt, den der Browser dann interpretieren kann. Diese Funktion muss auf der Seite definiert werden, auf der die JSONP -Antwort bewertet wird.

Lassen Sie uns sehen, wie das vorherige Beispiel aussieht. Dies ist eine aktualisierte JSON -Datei, die die ursprünglichen JSON -Daten in eine jsonCallback -Funktion einbindet.

function jsonCallback(json){
  console.log(json);
}

$.ajax({
  url: "http://run.plnkr.co/plunks/v8xyYN64V4nqCshgjKms/data-2.json",
  dataType: "jsonp"
});
Nach dem Login kopieren

Dies zeichnet die erwarteten Ergebnisse an der Konsole auf. Wir haben jetzt (wenn auch ziemlich begrenzt) Cross-Domain Ajax.

API von Drittanbietern

Mit einigen APIs von Drittanbietern können Sie den Namen einer Rückruffunktion angeben, die bei der Rückgabe der Anforderung ausgeführt werden sollte. Eine solche API ist die Github -API.

Im folgenden Beispiel erhalten wir die Benutzerinformationen von John Ressig (JQuery Creator) und protokollieren die Antwort auf die Konsole mit der logResults -Rallback -Funktion.

function logResults(json){
  console.log(json);
}

$.ajax({
  url: "https://api.github.com/users/jeresig",
  dataType: "jsonp",
  jsonpCallback: "logResults"
});
Nach dem Login kopieren

Dies kann auch geschrieben werden wie:

$.getJSON("https://api.github.com/users/jeresig?callback=?",function(json){
  console.log(json);
});
Nach dem Login kopieren

Die ? am Ende der URL teilt JQuery mit, dass es eine JSONP -Anfrage anstelle von JSON verarbeitet. JQuery registriert dann automatisch die Rückruffunktion, die sie bei der Rückgabe der Anfrage aufruft.

Wenn Sie mehr über die GetJson -Methode von JQuery erfahren möchten, lesen Sie bitte: ajax/jQuery.getJson einfaches Beispiel

Vorsichtsmaßnahmen

Aber wie Sie vielleicht inzwischen erkannt haben, hat dieser Ansatz einige Nachteile.

Zum Beispiel kann JSONP nur Cross-Domain-Anfragen ausführen, und der Server muss diese explizit unterstützen. JSONP ist nicht ohne Sicherheitsprobleme. Lassen Sie uns also kurz einige andere Lösungen einführen.

Verwenden von Agent

Der serverseitige Code unterliegt nicht der gleichen Richtlinien und kann ohne Probleme mit dem Origin-Origin-Anfragen ausführen. So können Sie eine Art Proxy erstellen und diese verwenden, um alle von Ihnen benötigten Daten abzurufen. Siehe unser erstes Beispiel:

/* proxy.php */
$url = "http://run.plnkr.co/plunks/v8xyYN64V4nqCshgjKms/data-1.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec ($ch);
curl_close ($ch);
echo $result;
Nach dem Login kopieren

im Client:

$.getJSON("https://www.php.cn/link/28db3b5e7bfadf38b792da7192530ac1.com/proxy.php", function(json) {
  console.log(json);
})
Nach dem Login kopieren

Aber diese Methode hat auch ihre Nachteile. Wenn beispielsweise eine Site von Drittanbietern Cookies zur Authentifizierung verwendet, funktioniert diese Methode nicht.

cors

Cross-Origin-Ressourcenfreigabe (CORS) ist eine W3C-Spezifikation, mit der Browser über Domänen hinweg kommunizieren können. Dies geschieht durch Einbeziehung des neuen HTTP-Headers von Access-Control-Allow-Origin-Origin-HTTP in die Antwort.

Verweist auf unser erstes Beispiel: Sie können Folgendes zur .htaccess -Datei (unter der Annahme von Apache) hinzufügen, um Anforderungen aus verschiedenen Quellen zuzulassen:

$.getJSON(
  "http://run.plnkr.co/plunks/v8xyYN64V4nqCshgjKms/data-1.json",
  function(json) { console.log(json); }
);
Nach dem Login kopieren
Nach dem Login kopieren

(Wenn Sie einen Server ausführen, der nicht Apache ist, lesen Sie ihn bitte hier: https://www.php.cn/link/819e2e55be8ef0957b56ea94356bfb79 )

Sie können mehr über CORs in einem unserer letzten Tutorials erfahren: Weitere Informationen zu CORS

erfahren Schlussfolgerung

Mit

JSONP können Sie homologe Richtlinien umgehen und in gewissem Maße Cross-Domain-Ajax-Anrufe tätigen. Es ist keine magische Pille, und natürlich hat sie ihre Probleme, aber in einigen Fällen kann sie sich als von unschätzbarem Wert erweisen, wenn Daten aus verschiedenen Quellen entnommen werden.

Mit

JSONP können Sie auch eine Vielzahl von Inhalten aus verschiedenen Diensten extrahieren. Viele bekannte Websites bieten JSONP-Dienste (wie Flickr) an, mit denen Sie über vordefinierte APIs auf ihren Inhalt zugreifen können. Sie finden eine vollständige Liste von ihnen im ProgrammableWeb API -Verzeichnis.

(Folgendes ist der FAQ

FAQs über JSONP (FAQ)

  • Was ist der Hauptunterschied zwischen JSON und JSONP? Sowohl JSON als auch JSONP sind Formate, mit denen Daten zwischen Servern und Webanwendungen verarbeitet werden. Der Hauptunterschied besteht darin, wie sie mit Cross-Domänen-Anfragen umgehen. JSON kann aufgrund homologen Richtlinien (in Webbrowsern implementierte Sicherheitsmaßnahmen) keine Cross-Domänen-Anfragen unterstützen. Andererseits umgeht JSONP diese Richtlinie mithilfe einer bevölkerungswidrigen Methode, sodass Daten von Servern mit unterschiedlichen Domänen als dem Client angefordert werden können.

  • Wie umgeht JSONP die gleichorientierte Richtlinie? JSONP umgeht homologe Richtlinien mit der Methode Polsterung oder "Füllenanforderung". Bei dieser Methode fordert der Client Daten von Servern in verschiedenen Domänen an, indem sie die Rückruffunktion an die URL anhängen. Der Server wickelt dann die angeforderten Daten in diese Funktion und sendet sie an den Client zurück. Der Client führt diese Funktion aus, um auf die Daten zuzugreifen. Diese Methode ermöglicht es JSONP, die durch homologen Richtlinien auferlegten Cross-Domänen-Grenzen zu überwinden.

  • Ist JSONP sicher? Obwohl JSONP eine Lösung für homologe Richtlinien bietet, hat es seine eigenen Sicherheitsrisiken. Da JSONP die Ausführung von Skripten umfasst, die vom Server empfangen werden, eröffnet er, wenn der Server beschädigt ist, die Möglichkeit für einen Cross-Site-Skript-Angriff (Skripting). Verwenden Sie daher nur JSONP mit vertrauenswürdigen Quellen.

  • Kann JSONP -Fehlerantworten die Fehlerreaktionen handeln? Im Gegensatz zu JSON hat JSONP keine integrierte Fehlerbehandlung. Wenn die JSONP -Anforderung fehlschlägt, wirft der Browser keinen Fehler auf und die Rückruffunktion wird nicht ausgeführt. Um Fehler in JSONP zu bewältigen, können Sie einen Zeitüberschreitungsmechanismus implementieren, der einen Fehler auslöst, wenn die Rückruffunktion nicht innerhalb einer bestimmten Zeit ausgeführt wird.

  • Wie erstellt man eine JSONP -Anfrage mit JQuery? jQuery bietet eine einfache Möglichkeit, JSONP -Anfragen mit der Methode $ .ajax () zu stellen. Sie müssen den Datentyp in der Einstellung $ .ajax () als "JSONP" angeben.

  • Was sind die Grenzen von JSONP? JSONP hat einige Einschränkungen. Es unterstützt nur GET -Anfragen und unterstützt weder Post noch andere HTTP -Methoden. Es fehlen auch die Funktionen zur Fehlerbehandlung. Darüber hinaus stellt JSONP Sicherheitsrisiken dar, da es sich um die Umgehung der homologen Richtlinien handelt.

  • Wird JSONP noch verwendet? Obwohl JSONP in der Vergangenheit eine beliebte Lösung für Cross-Domänen-Anfragen war, hat CORS jetzt eine geringe Nutzungshäufigkeit aufgrund der Entstehung von CORs (Cross-Origin-Ressourcenfreigabe). CORS bietet eine sicherere und leistungsstärkere Kreuzdomäne Anfragen.

Das obige ist der detaillierte Inhalt vonJQuery's JSONP mit Beispielen erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1662
14
PHP-Tutorial
1262
29
C#-Tutorial
1235
24
Entmystifizieren JavaScript: Was es tut und warum es wichtig ist Entmystifizieren JavaScript: Was es tut und warum es wichtig ist Apr 09, 2025 am 12:07 AM

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Die Entwicklung von JavaScript: Aktuelle Trends und Zukunftsaussichten Die Entwicklung von JavaScript: Aktuelle Trends und Zukunftsaussichten Apr 10, 2025 am 09:33 AM

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

JavaScript -Engines: Implementierungen vergleichen JavaScript -Engines: Implementierungen vergleichen Apr 13, 2025 am 12:05 AM

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

JavaScript: Erforschung der Vielseitigkeit einer Websprache JavaScript: Erforschung der Vielseitigkeit einer Websprache Apr 11, 2025 am 12:01 AM

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Apr 16, 2025 am 12:12 AM

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

So erstellen Sie eine SaaS-Anwendung mit mehreren Mietern mit Next.js (Frontend Integration) So erstellen Sie eine SaaS-Anwendung mit mehreren Mietern mit Next.js (Frontend Integration) Apr 11, 2025 am 08:22 AM

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

Von C/C nach JavaScript: Wie alles funktioniert Von C/C nach JavaScript: Wie alles funktioniert Apr 14, 2025 am 12:05 AM

Die Verschiebung von C/C zu JavaScript erfordert die Anpassung an dynamische Typisierung, Müllsammlung und asynchrone Programmierung. 1) C/C ist eine statisch typisierte Sprache, die eine manuelle Speicherverwaltung erfordert, während JavaScript dynamisch eingegeben und die Müllsammlung automatisch verarbeitet wird. 2) C/C muss in den Maschinencode kompiliert werden, während JavaScript eine interpretierte Sprache ist. 3) JavaScript führt Konzepte wie Verschlüsse, Prototypketten und Versprechen ein, die die Flexibilität und asynchrone Programmierfunktionen verbessern.

Erstellen einer SaaS-Anwendung mit mehreren Mietern mit Next.js (Backend Integration) Erstellen einer SaaS-Anwendung mit mehreren Mietern mit Next.js (Backend Integration) Apr 11, 2025 am 08:23 AM

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

See all articles