Cette fois, je vais vous expliquer comment utiliser le développement Web multi-domaines. Quelles sont les précautions pour une utilisation multi-domaines dans le développement Web. Voici des cas pratiques, jetons un coup d'œil.
Dans le processus de développement Web, tout le monde sera en contact avec le cross-domaine. Beaucoup de gens ne savent pas ce qu'est le cross-domain et comment résoudre le cross-domain dans le développement Web. L'article suivant vous en donnera une introduction détaillée. Si vous êtes intéressé, découvrons les solutions inter-domaines et inter-domaines.
Qu’est-ce que le cross-domain ?
Le concept est le suivant : tant que le protocole, le nom de domaine et le port sont différents, ils sont considérés comme des domaines différents
Ce qui suit est une explication détaillée de la situation spécifique entre domaines
Description | S'il faut autoriser la communication | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
http://www.a.com/a.js, http://www.a.com/b.js | Sous le même nom de domaine | Autoriser | |||||||||||||||||||||||||||
http://www.a.com/lab/a.js, http://www.a.com/script/b.js | Différents dossiers sous le même nom de domaine | Autoriser | |||||||||||||||||||||||||||
http://www.a.com:8000/a.js, http://www.a.com/b.js | Même nom de domaine, ports différents | Non autorisé | |||||||||||||||||||||||||||
http://www.a.com/a.js、https://
|
Même nom de domaine, protocoles différents | Non autorisé | |||||||||||||||||||||||||||
http://www.a.com/a.js, http://70.32.92.74/b.js | Nom de domaine et nom de domaine ip correspondant | Non autorisé | |||||||||||||||||||||||||||
http://www.a.com/a.js, http://script.a.com/b.js | Le domaine principal est le même mais les sous-domaines sont différents | Non autorisé (l'accès aux cookies n'est pas autorisé dans ce cas) | |||||||||||||||||||||||||||
http://www.a.com/a.js, http://a.com/b.js | Même nom de domaine, noms de domaine de deuxième niveau différents (comme ci-dessus) | Non autorisé (l'accès aux cookies n'est pas autorisé dans ce cas) | |||||||||||||||||||||||||||
http://www.cnblogs.com/a.js, http://www.a.com/b.js | Différents noms de domaine | Non autorisé |
1. document.domain inter-domaines
Principe : Des pages sous le même nom de domaine principal mais des noms de sous-domaines différents peuvent être définis sur document.domain
pour en faire le même domaine
Restrictions : Les documents du même domaine assurent l'interopérabilité entre les pages, et la page iframe doit être chargée
Les pages sous les noms de domaine suivants peuvent être interopérées entre domaines via document.domain : http://a.com/foo, http://b.a.com/bar, http://c.a.com/bar. Cependant, l'interopération de pages ne peut être effectuée que sous forme d'imbrication de pages. Par exemple, la méthode iframe courante peut compléter l'imbrication de pages
// URL http://a.com/foo var ifr = document.createElement('iframe'); ifr.src = 'http://b.a.com/bar'; ifr.onload = function(){ var ifrdoc = ifr.contentDocument || ifr.contentWindow.document; ifrdoc.getElementsById("foo").innerHTML); }; ifr.style.display = 'none'; document.body.appendChild(ifr);
. L'URL où se trouve le code ci-dessus est http://a.com/foo, et son accès DOM à http://b.a.com/bar nécessite que ce dernier définisse document.domain d'un niveau supérieur
// URL http://b.a.com/bar document.domain = 'a.com'
document.domain ne peut être défini qu'à partir d'un sous-domaine vers le domaine principal. Les paramètres vers le bas et vers d'autres noms de domaine ne sont pas autorisés. L'erreur indiquée dans Chrome est la suivante
. DOMException non interceptée : échec de la définition de la propriété "domaine" sur "Document" : "baidu.com" n'est pas un suffixe de "b.a.com"
2. Balises avec src
Principe : Toutes les balises HTML avec l'attribut src peuvent être inter-domaines, y compris ,
Limitation : Un objet DOM doit être créé, qui ne peut être utilisé que pour la méthode GET
Ajoutez une balise HTML avec l'attribut src dans document.body
. L'URL pointée par la valeur de l'attribut src sera accessible à l'aide de la méthode GET. Cet accès peut être inter-domaine
. En fait, la balise de la feuille de style peut également être inter-domaine. Tant que la balise HTML a src ou href, elle a des capacités inter-domaines
.
Différentes balises HTML envoient des requêtes HTTP à des moments différents. Par exemple, enverra une requête lorsque l'attribut src est modifié, tandis que script, iframe, link[rel=stylesheet]
n'enverra une requête HTTP qu'après avoir été ajouté à l'arborescence DOM :
var img = new Image(); img.src = 'http://some/picture'; // 发送HTTP请求 var ifr = $('<iframe>', {src: 'http://b.a.com/bar'}); $('body').append(ifr); // 发送HTTP请求
3. JSONP
Principe :