Maison > interface Web > js tutoriel > Résumé de 5 façons de gérer les problèmes inter-domaines js_compétences javascript

Résumé de 5 façons de gérer les problèmes inter-domaines js_compétences javascript

WBOY
Libérer: 2016-05-16 16:29:16
original
1473 Les gens l'ont consulté

J'ai rencontré un problème inter-domaines il y a deux jours, qui peut être résolu en utilisant jsonp. (http://www.jb51.net/article/57889.htm)

Récemment réglé le problème :

1.jsonp.

Requête Ajax, dataType est jsonp. Ce formulaire nécessite que la requête soit ajustée côté serveur pour renvoyer un rappel ([json-object]). Si le serveur renvoie un objet json normal. Ensuite, lors du débogage, l'erreur « Uncaught SyntaxError : jeton inattendu » sera signalée dans la console du navigateur Chrome ; l'erreur « SyntaxError : manquant ; avant l'instruction » sera signalée dans la console du navigateur Firefox.

2.iframe inter-domaines.

Ajoutez un élément iframe à la page. Lorsque vous devez appeler une requête get, définissez le src de l'iframe sur l'URL de la requête get pour lancer l'appel de la requête get.

Copier le code Le code est le suivant :

var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$("#iframe").attr("src", url);//Cross-domain, utilisez iframe

La méthode iframe est plus puissante que jsonp. En plus de traiter les requêtes http, elle peut également implémenter des appels js sur plusieurs domaines.

3. Traitement de l'attribut src des éléments de script

L'attribut src de iframe, img, style, script et d'autres éléments peut demander directement des ressources à différents domaines. Jsonp est une implémentation simple de l'utilisation de balises de script pour demander des ressources sur plusieurs domaines, c'est donc essentiellement la même chose que jsonp et également. nécessite un formulaire de rappel de retour de demande côté serveur.

Copier le code Le code est le suivant :

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

4. Utilisez le traitement get sur le serveur.

Pour les entreprises qui n'ont pas d'exigences rigides en matière de traitement frontal, vous pouvez l'encapsuler côté serveur, puis lancer un appel côté serveur, afin que les problèmes inter-domaines puissent être résolus. Ensuite selon que la requête est envoyée ou que la valeur de retour doit être obtenue, le code utilise le mode synchrone ou asynchrone.

Copier le code Le code est le suivant :

        vide statique privé CreateGetHttpResponse (URL de chaîne, int? timeout, chaîne userAgent, cookies CookieCollection)
        {
            if (string.IsNullOrEmpty(url))
            {
                lancer un nouveau ArgumentNullException("url");
            >
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            if (!string.IsNullOrEmpty(userAgent))
            {
                request.UserAgent = userAgent;
            >
            si (timeout.HasValue)
            {
                request.Timeout = timeout.Value;
            >
            si (cookies != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookies);
            >
            request.BeginGetResponse(null,null);//异步
            // renvoie la requête.GetResponse() en tant que HttpWebResponse ;
        >

5.flash跨域

过于尖端了==,再研究

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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal