Heim  >  Artikel  >  Java  >  Detaillierte Einführung in den JAVA-Hintergrund für domänenübergreifende Ajax-Aufrufe

Detaillierte Einführung in den JAVA-Hintergrund für domänenübergreifende Ajax-Aufrufe

黄舟
黄舟Original
2017-05-28 09:26:061403Durchsuche

In diesem Artikel wird hauptsächlich die detaillierte Erklärung des domänenübergreifenden Ajax-Aufrufs (jsonp) vorgestellt. Der Herausgeber findet es ziemlich gut. Jetzt werde ich es mit allen teilen und machen Sie es für alle zugänglich. Schauen wir uns den Editor an

1. JSONP-Definition

JSONP ist die Abkürzung für Englisch JSON mit Padding ist eine inoffizielle Vereinbarung. Es ermöglicht die Generierung von Skript-Tags auf der Serverseite und die Rückgabe an den Client, wodurch der Site-Zugriff in Form von Javascript callback ermöglicht wird. JSONP ist eine Skript-Tag-Injektion, die die vom Server zurückgegebene Antwort zur Seite hinzufügt, um bestimmte Funktionen zu implementieren.

2. Ursprung von JSONP

Um den Ursprung von JSONP zu erklären, sprechen wir zunächst über die „SOP: Same Origin Policy“ des Browsers. Kurz gesagt, der Browser beschränkt Skriptprogramme darauf, nur mit Skripten desselben Protokolls, desselben Domänennamens und desselben Ports zu interagieren. Dies umfasst das Teilen und Übergeben von Variablen usw. Auch die Lieferung von Cookies folgt der gleichen Strategie. Dies führt zu einigen Problemen bei der Integration von Anwendungen mit mehreren Servern. Das Problem des domänenübergreifenden Zugriffs führt dazu, dass der Ajax-Code von Site A nicht auf die Daten von Site B zugreifen kann.

Wie löst man den domänenübergreifenden Zugriff? Dann müssen Sie eine Funktion des Browsers nutzen: Obwohl der Browser nicht zulässt, dass Skripte auf der Seite Daten domänenübergreifend lesen, erlaubt er HTML , auf domänenübergreifende Ressourcen wie Bilder , CSS und Skripte. Der Verweis auf das Skriptprogramm ist etwas Besonderes. Nachdem es vom Browser analysiert wurde, ist es dasselbe wie das lokale Skriptprogramm und kann sofort interpretiert und ausgeführt werden. Beispielsweise gibt es in einer js-Datei auf Site B ein einfaches Eingabeaufforderungsfeld: warning („Das ist Victor!“). Wenn Sie auf Site A auf dieses JS verweisen, wird dieses Skript in der Anwendung auf Site B ausgeführt und zeigt eine Warnmeldung an. Da der Verweis auf externe Skripte über Skript-Tags erfolgt und das Skriptprogramm alle Tags der HTML-Seite über DOM steuern kann (einschließlich der dynamischen Erstellung von Skript-Tags), kann dies durch Aufrufen von externen Programmen erreicht werden auf lokale Ressourcen. Darüber hinaus können durch die Verwendung des 3f1c4e4b6b16bbbd69b2ee476dc4f83a-Tags ausführbare JavaScriptFunktions-Aufrufe oder JSON-Daten direkt vom Server zurückgegeben werden.

3. JSONP-Prinzip und Implementierung

Registrieren Sie zunächst einen Rückruf auf dem Client und übergeben Sie dann den Namen des Rückrufs an den Server. Zu diesem Zeitpunkt generiert der Server zunächst JSON-Daten. Verwenden Sie dann die JavaScript-Syntax, um eine Funktion zu generieren.

Dann werden die JSON-Daten direkt als Parameter in die Funktion eingefügt, wodurch eine js-Syntax generiert wird der Kunde.

Schließlich wird das Skript-Tag im Client-Browser analysiert und das zurückgegebene JavaScript-Dokument ausgeführt. Zu diesem Zeitpunkt werden die Daten als Parameter an die vordefinierte

Rückruffunktion des Clients übergeben ( Dynamisch die Callback-Funktion ausführen).

Spezifische Codeoperationen:

1, JS-Code

$.ajax({

  url: 'http://192.168.3.49:8080/PORTAL/authCode',

  type: 'post',

  dataType:'jsonp',

  jsonp: "callback",

  data: {

    "type":'0',

    "mobilePhone": $("#tel").val()

  },

  success:function(data){

    alert(data.ret)

    settime(obj);

  },

  error:function(data){

    $('#mstr_ck').html("获取验证码失败,请重试!");

    $("#error_ck").show();

  }

});
2, Java-Code

@RequestMapping(value = "authCode")

@ResponseBody

public String getMobileAuthCode( HttpServletRequest request, String callback)

    throws Exception {

  String result = "{'ret':'true'}";

  //加上返回参数

  result=callback+"("+result+")";

  return result;

}
Wie oben: der Front-End-Aufruf Ergebnis erscheint: Warnung ('wahr') 


Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den JAVA-Hintergrund für domänenübergreifende Ajax-Aufrufe. 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