Lösung für das domänenübergreifende Ajax-Problem: 1. Fügen Sie einen Header zum Antwortheader hinzu, um den Zugriff zu ermöglichen. 2. JSONP unterstützt nur Get-Anfragen, aber keine Post-Anfragen. 4. Verwenden Sie Nginx, um eine Unternehmensebene zu erstellen Schnittstellen-Gateway.
Verwandte kostenlose Lernempfehlungen: ajax (Video)
ajax-übergreifende Problemlösung:
Lösung 1: Hinzufügen Header zum Antwortheader Zugriff zulassen
Cross-Origin Resource Sharing (CORS) Cross-Origin Resource Sharing
Die Sicherheitsgrundlage dieser domänenübergreifenden Zugriffslösung basiert auf „JavaScript kann diesen HTTP-Header nicht steuern“
Es erfordert eine Autorisierung über den von zurückgegebenen HTTP-Header die Zieldomäne. Gibt an, ob domänenübergreifender Zugriff zugelassen werden soll.
response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问 response.addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式
Lösung 2: JSONP unterstützt nur Get-Anfragen und keine Post-Anfragen
Verwendung: ①Datentyp in JSONP ändern ②JSONP: „jsonpCallback“————Der tatsächliche an das Backend gesendete Wert ist http:// a.a.com/ a/FromServlet?userName=644064&jsonpCallback=jQueryxxx ③Das Backend erhält den jsonpCallback in der Get-Anfrage ④Konstruieren Sie die Rückrufstruktur
$.ajax({ type : "GET", async : false, url : "http://a.a.com/a/FromServlet?userName=644064", dataType : "jsonp",//数据类型为jsonp jsonp : "jsonpCallback",//服务端用于接收callback调用的function名的参数 success : function(data) { alert(data["userName"]); }, error : function() { alert('fail'); } }); //后端 String jsonpCallback = request.getParameter("jsonpCallback"); //构造回调函数格式jsonpCallback(数据) resp.getWriter().println(jsonpCallback+"("+jsonObject.toJSONString()+")");
JSONP-Implementierungsprinzip
Unter derselben Ursprungsrichtlinie kann die Seite unter einem bestimmten Server die nicht erhalten Daten außerhalb des Servers, das heißt, allgemeines Ajax kann keine domänenübergreifenden Anforderungen stellen. Ausnahmen sind jedoch Tags wie img, iframe und script, die über das src-Attribut Daten auf anderen Servern anfordern können. Mithilfe der offenen Richtlinie des