Maison  >  Article  >  interface Web  >  js définit document.domain pour acquérir des compétences d'analyse de point d'attention inter-domaines_javascript

js définit document.domain pour acquérir des compétences d'analyse de point d'attention inter-domaines_javascript

WBOY
WBOYoriginal
2016-05-16 15:58:091505parcourir

L'exemple de cet article analyse les points à noter lors de la configuration de document.domain en js pour réaliser une implémentation inter-domaines. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :

document.domain
Utilisé pour obtenir le nom de domaine de la page Web actuelle.
Par exemple, saisissez dans la barre d'adresse :

Copier le code Le code est le suivant :
javascript:alert(document.domain); net

Nous pouvons également attribuer une valeur à l'attribut document.domain, mais il existe des restrictions. Vous ne pouvez l'attribuer qu'au nom de domaine actuel ou au nom de domaine de base.
Par exemple :

Copier le code Le code est le suivant :
javascript:alert(document.domain = "jb51.net"); //jb51 .net
javascript: alerte (document.domain = "www.jb51.net"); //www.jb51.net

Les affectations ci-dessus sont toutes réussies car www.jb51.net est le nom de domaine actuel et jb51.net est le nom de domaine de base.

Mais l'affectation suivante provoquera une erreur « paramètre non valide » :

Copier le code Le code est le suivant :
javascript:alert(document.domain = "cctv.net"); //Paramètres invalides
javascript:alert(document.domain = "www.jb51.net"); //Paramètre invalide

Étant donné que cctv.net et www.jb51.net ne sont pas le nom de domaine actuel ni le nom de domaine de base du nom de domaine actuel, des erreurs se produiront.
Il s'agit d'empêcher quelqu'un de modifier de manière malveillante document.domain pour voler des données entre domaines.

Utilisez document.domain pour réaliser du cross-domain :

Prérequis : Ces deux noms de domaine doivent appartenir au même nom de domaine de base ! Et les protocoles et ports utilisés doivent être cohérents, sinon document.domain ne peut pas être utilisé en cross-domain

Javascript interdit l'interopérabilité de deux pages ou plus de domaines différents pour des raisons de sécurité.
Les pages du même domaine interfonctionneront sans aucun problème.

Par exemple, dans une page Web (a.html) de aaa.com, une page Web (b.html) de bbb.com est introduite à l'aide d'iframe.
À l'heure actuelle, le contenu de b.html peut être vu dans a.html, mais javascript ne peut pas être utilisé pour le faire fonctionner. Parce que les deux pages appartiennent à des domaines différents, avant d'opérer, js vérifiera si les domaines des deux pages sont égaux, l'opération sera autorisée. S'ils ne sont pas égaux, l'opération sera rejetée.
Il est impossible de remplacer a.html et b.html par le même domaine en utilisant JS. Parce que leurs noms de domaine de base ne sont pas égaux. (Si vous forcez JS à les changer en champs égaux, la même "erreur de paramètre invalide" que ci-dessus sera signalée)

Donc, si vous introduisez une autre page Web de aaa.com dans a.html, il n'y aura aucun problème car les domaines sont égaux.

Il existe une autre situation, deux sous-domaines :

aaa.xxx.com
bbb.xxx.com

Une page web (a.html) en aaa introduit une page web (b.html) en bbb,
Pour le moment, le contenu de b.html ne peut pas être manipulé dans a.html.
Étant donné que le document.domain est différent, l'un est aaa.xxx.com et l'autre est bbb.xxx.com.

À ce stade, nous pouvons changer le domaine des deux pages pour le même via Javascript,
Besoin d'ajouter à la fois a.html et b.html :

Copier le code Le code est le suivant :
document.domain = "xxx.com";

De cette façon, les deux pages peuvent fonctionner ensemble. C'est-à-dire qu'un « cross-domaine » entre les mêmes noms de domaine de base est réalisé.

J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.

Déclaration:
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