Heim > Web-Frontend > js-Tutorial > Zusammenfassung von 5 Möglichkeiten zum Umgang mit js-domänenübergreifenden Problemen_Javascript-Fähigkeiten

Zusammenfassung von 5 Möglichkeiten zum Umgang mit js-domänenübergreifenden Problemen_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 16:29:16
Original
1487 Leute haben es durchsucht

Ich bin vor zwei Tagen auf ein domänenübergreifendes Problem gestoßen, das mit jsonp gelöst werden kann. (http://www.jb51.net/article/57889.htm)

Kürzlich geklärt:

1.jsonp.

Ajax-Anfrage, dataType ist jsonp. Dieses Formular erfordert, dass die Anforderung auf der Serverseite angepasst wird, um callback([json-object]) zurückzugeben. Wenn der Server ein normales JSON-Objekt zurückgibt. Beim Debuggen wird dann der Fehler „Uncaught SyntaxError: Unexpected token“ in der Chrome-Browserkonsole gemeldet. Der Fehler „SyntaxError: fehlt; vor der Anweisung“ wird in der Firefox-Browserkonsole gemeldet.

2.iframe domänenübergreifend.

Fügen Sie der Seite ein Iframe-Element hinzu. Wenn Sie eine Get-Anfrage aufrufen müssen, legen Sie die Quelle des Iframes auf die URL der Get-Anfrage fest, um den Get-Request-Aufruf zu initiieren.

Code kopieren Der Code lautet wie folgt:

var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$("#iframe").attr("src", url);//Domainübergreifend, iframe verwenden

Die IFrame-Methode ist stärker als JSONP. Zusätzlich zur Verarbeitung von HTTP-Anfragen kann sie auch JS-Aufrufe über Domänen hinweg implementieren.

3. src-Attributverarbeitung von Skriptelementen

Das src-Attribut von iframe, img, style, script und anderen Elementen kann Ressourcen direkt von verschiedenen Domänen anfordern. JSONP ist eine einfache Implementierung der Verwendung von Skript-Tags zum Anfordern von Ressourcen über Domänen hinweg, daher ist dies im Wesentlichen dasselbe wie JSONP und auch Erfordert ein serverseitiges Rückrufrückrufformular.

Code kopieren Der Code lautet wie folgt:

var url="http://xxx.xxx.xxx?p1=1";
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);

4. Verwenden Sie die Get-Verarbeitung auf dem Server.

Für Unternehmen, die keine strengen Anforderungen an die Front-End-Verarbeitung haben, können Sie diese auf der Serverseite kapseln und dann einen Aufruf auf der Serverseite initiieren, sodass domänenübergreifende Probleme gelöst werden können. Abhängig davon, ob die Anfrage gesendet wird oder der Rückgabewert abgerufen werden muss, verwendet der Code dann den synchronen oder asynchronen Modus.

Code kopieren Der Code lautet wie folgt:

        private static void CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollectioncookies)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            if (!string.IsNullOrEmpty(userAgent))
            {
                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);//异步
            //return request.GetResponse() as HttpWebResponse;
        }

5.flash跨域

过于尖端了==,再研究

总结:以上5种方法就是常见的解决js跨域问题的处理方法了,最后一种比较高端,等我研究清楚了再补上吧.

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage