Heim >Web-Frontend >js-Tutorial >Jsonp löst das domänenübergreifende Problem von Ajax

Jsonp löst das domänenübergreifende Problem von Ajax

php中世界最好的语言
php中世界最好的语言Original
2018-04-04 14:20:421289Durchsuche

Dieses Mal werde ich Ihnen Jsonp vorstellen, um das domänenübergreifende Problem von Ajax zu lösen. Was sind die Vorsichtsmaßnahmen für Jsonp, um das domänenübergreifende Problem von Ajax zu lösen? Schauen Sie mal rein.

1. Einleitung

In letzter Zeit gibt es viele domänenübergreifende Probleme, und ich habe dieses zufällig gesehen, also habe ich es zusammengefasst , über JSONP Es gibt tatsächlich viele Dinge auf Baidu, und viele Leute kopieren andere. Wenn das so weitergeht, kann ich tatsächlich nur ein paar Informationen finden. Der Schlüssel ist, dass ich es immer noch nicht verstehen kann Nach vielen Versuchen habe ich es zusammengefasst. Nach einer Weile habe ich es endlich herausgefunden. Zu beachten ist, dass Jsonp hier verwendet wird, um das domänenübergreifende Problem von Ajax zu lösen. Die spezifische Implementierung ist nicht wirklich Ajax.

1. Same-Origin-Richtlinie

Browser haben ein sehr wichtiges Konzept – Same-Origin-Richtlinie. Der sogenannte Same Origin bedeutet, dass Domainname, Protokoll und Port gleich sind. Clientseitige Skripte (JavaScript, ActionScript) aus unterschiedlichen Quellen können ohne ausdrückliche Genehmigung nicht gegenseitig die Ressourcen lesen oder schreiben.

2. JSONP

JSONP (JSON mit Padding) ist ein „Nutzungsmodus“ von JSON, der zur Lösung des Problems des domänenübergreifenden Datenzugriffs verwendet werden kann Mainstream-Browser. Aufgrund der Same-Origin-Richtlinie können Webseiten, die sich auf server1.example.com befinden, im Allgemeinen nicht mit anderen Servern als server1.example.com kommunizieren, mit Ausnahme des HTML-Skriptelements. Mit dieser offenen Richtlinie des <script>-Elements können Webseiten dynamisch aus anderen Quellen generierte JSON-Daten abrufen. Dieses Verwendungsmuster wird als JSONP bezeichnet. Bei den mit JSONP erfassten Daten handelt es sich nicht um JSON, sondern um beliebiges JavaScript, das mit einem JavaScript-Interpreter ausgeführt wird, anstatt mit einem JSON-Parser analysiert zu werden. <p style="text-align: left;"><p style="text-align: left;"><span style="color: #ff0000">2. Üben<strong><p style="text-align: left;">1. Simulieren Sie domänenübergreifende Anfragen <strong>Machen Sie zwei davon Maschine Es gibt einen Tomcat und die Ports sind 8080 bzw. 8888, was die Bedingung eines nicht gleichen Ursprungs erfüllt. Wenn Sie Ajax von einem Port senden, um Daten von einem anderen Port zu erhalten, wird definitiv ein domänenübergreifendes Anforderungsproblem gemeldet. <p style="text-align: left;"><p style="text-align: left;"><img title="" alt="Jsonp löst das domänenübergreifende Problem von Ajax" src="https://img.php.cn/upload/article/000/061/021/6aa998e4d2edca235a11c4aef7eb7a24-0.png"/>Hier gibt es zwei Projekte, nämlich jsonp (8080) und other (8888). Die index.jsp im jsonp-Projekt lautet wie folgt: <p style="max-width:90%"> <pre class="brush:php;toolbar:false"><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Insert title here <script type="text/javascript" src="js/jquery.min.js"></script> <script> function jsonp_fun(){ $.ajax({ url:&#39;http://localhost:8888/other/index.jsp&#39;, type:&#39;post&#39;, dataType:&#39;text&#39;, success:function(data){ console.log(data); } }); } </script>

Das obige ist der detaillierte Inhalt vonJsonp löst das domänenübergreifende Problem von Ajax. 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