Ich habe vor zwei Tagen auf ein Cross-Domain-Problem gestoßen, und es kann mit JSONP gelöst werden. (//www.vevb.com/article/57889.htm)
Ich habe kürzlich geklärt:
1.Jsonp.
AJAX -Anforderung, DataType ist JSONP. In diesem Formular muss die Anforderung an das Formular angepasst werden, das den Rückruf ([JSON-Object]) auf der Serverseite zurückgibt. Wenn der Server ein normales JSON -Objekt zurückgibt. Bei Debugging wird der Fehler "Uncortn SyntaxError: Unerwartes Token" über die Konsole des Chrombrowsers gemeldet. Der Fehler "SyntaxError: Fehlende; vor Anweisung" wird in der Konsole des Firefox -Browsers gemeldet.
2.Inrame Cross-Domain.
Fügen Sie der Seite ein Iframe -Element hinzu. Wenn Sie die GET -Anfrage anrufen müssen, setzen Sie die SRC des IFRame auf die GET -Anforderungs -URL ein, um den Anruf an die GET -Anfrage zu initiieren.
Die Codekopie lautet wie folgt:
var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$ ("#iframe"). attr ("src", URL); // Cross-Domain, verwenden Sie Iframe
Die Iframe -Methode ist stärker als JSONP. Neben der Möglichkeit, HTTP -Anfragen zu bearbeiten, kann es auch JS -Anrufe in den Domänen implementieren.
3. Verarbeitung von SRC -Attributen von Skriptelementen
Die SRC -Attribute von Iframe, IMG, Stil, Skript und anderen Elementen können direkt Ressourcen aus verschiedenen Domänen anfordern. JSONP ist eine einfache Implementierung von Cross-Domain-Anforderungsressourcen mithilfe von Skript-Tags. Daher ist dies im Wesentlichen das gleiche wie JSONP, und der Server muss auch das Callback -Formular anfordern.
Die Codekopie lautet wie folgt:
var url = "http://xxx.xxx.xxx?p1=1";
var script = document.createelement ('script');
Skript.SetatTribute ('SRC', URL);
document.getElementsByTagName ('head') [0] .AppendChild (script);
4.. Verwenden Sie die Verarbeitung auf dem Server.
Für diejenigen, die keine starken Anforderungen an die Verarbeitung im Front-End haben, können sie sie auf dem Server zusammenfassen und dann Aufrufe auf dem Server initiieren, die das Cross-Domain-Problem lösen können. Anschließend werden wir entscheiden, ob der Code den synchronen oder asynchronen Modus verwendet.
Die Codekopie lautet wie folgt:
private statische void createGethttPesponse (String -URL, int? Timeout, String UserAgent, CookieRection Cookies)
{
if (string.isnullorempy (url))
{
Neue Argumentnullexception ("URL") werfen;
}
var request = webRequest.create (URL) als httpwebRequest;
Request.Method = "get";
if (! String.IsnullorEmpty (BenutzerAgent))
{
request.useragent = userAgent;
}
if (timeout.hasValue)
{
Request.TimeOut = timeout.Value;
}
if (Cookies! = NULL)
{
request.cookiecontainer = new CookieContainer ();
request.cookiecontainer.add (Cookies);
}
Request.BegingEtResponse (NULL, NULL); // Asynchron
// return request.getResponse () als httpwebresponse;
}
5. Flash Cross-Domain
Zu modernster ==, studieren Sie es erneut
Zusammenfassung: Die oben genannten 5 Methoden sind häufige Möglichkeiten, um Cross-Domänen-Probleme von JS zu lösen. Der letzte ist relativ hochwertig. Lassen Sie uns das wieder gut machen, nachdem ich es klar studiert habe.