Maison  >  Article  >  Opération et maintenance  >  Qu'est-ce que le cross-domain et comment le résoudre

Qu'est-ce que le cross-domain et comment le résoudre

云罗郡主
云罗郡主original
2019-02-22 11:31:1054875parcourir

Je crois que beaucoup de gens ont entendu parler du cross-domain, mais beaucoup de gens ne savent pas ce que signifie le cross-domain. Alors, expliquons ce qu'est le cross-domain et comment le résoudre.

1 : Qu'est-ce que le cross-domain

Le cross-domain signifie que le navigateur ne peut pas exécuter de scripts provenant d'autres sites Web. Cela est dû à la politique de même origine du navigateur, qui est une restriction de sécurité mise en œuvre par le navigateur sur JavaScript. Lorsqu'un navigateur demande des ressources d'une page Web d'un nom de domaine à un autre nom de domaine, toute différence de nom de domaine, de port ou de protocole est considérée comme inter-domaine.

Deux : Comment résoudre les problèmes inter-domaines

1 jsonp inter-domaines

JSONP (JSON with Padding : padding JSON), un. des méthodes d'application de JSON Une nouvelle méthode,

La différence entre JSON et JSONP :

1 JSON renvoie une chaîne de données, tandis que JSONP renvoie du code de script (incluant un appel de fonction) <.>

2. JSONP ne prend en charge que les demandes d'obtention et ne prend pas en charge les demandes de publication

(similaire à l'ajout d'une balise de script à la page et au déclenchement d'une demande pour l'adresse spécifiée via l'attribut src, afin qu'il puisse être uniquement une requête Get)

2. proxy inverse nginx :

www.baidu.com/index.html doit appeler www.sina.com/server.php, vous pouvez écrire un interface www.baidu.com/server.php, par Cette interface appelle www.sina.com/server.php sur le backend et obtient la valeur de retour, puis la renvoie à index.html

3. header

en-tête côté PHP (' Access-Control-Allow-Origin:*'); //Autoriser l'accès depuis toutes les sources

en-tête ('Access-Control-Allow-Method: POST,GET'); //Autoriser la méthode d'accès

4 document.domain

Le cross-domain est divisé en deux types, l'un est que xhr ne peut pas accéder aux documents provenant de différentes sources, et le L'autre est que différentes fenêtres ne peuvent pas interagir les unes avec les autres ;

document.domain résout principalement la deuxième situation et ne peut être appliqué qu'au même domaine principal et à différents sous-domaines

Le paramètre de document ; .domain est limité, nous ne pouvons définir document.domain que sur lui-même ou sur un domaine parent de niveau supérieur, et le domaine principal doit être le même. Par exemple : le document.domain d'un document dans a.b.example.com peut être défini sur a.b.example.com, b.example.com et example.com, mais il ne peut pas être défini sur c.a.b.example.com car cela est le sous-domaine actuel du domaine ne peut pas être défini sur baidu.com car le domaine principal n'est plus le même.

5, window.name Points clés : window.name partage un window.name dans le cycle de vie de la page

Compatibilité : prise en charge de tous les navigateurs

Avantages :

L'utilisation la plus simple des fonctionnalités du navigateur pour transférer des données entre différents domaines

Pas besoin de préparation particulière du front-end et du back-end

Inconvénients :

Limite de taille : la taille maximale de window.name est d'environ 2 Mo, et différents navigateurs ont des conventions différentes

Sécurité : toutes les fenêtres de la page actuelle peuvent être modifiées, ce qui est très dangereux ;

Type de données : Les données transmises ne peuvent être limitées qu'à des chaînes. S'il s'agit d'un objet ou autre, elles seront automatiquement converties en chaîne.

6, postMessage

Points clés :

postMessage est un nouveau concept introduit par h5, et il est maintenant davantage promu et développé. Il a réalisé une série de. encapsulations , nous pouvons l'utiliser via window.postMessage et surveiller les messages qu'il envoie

Compatibilité : la version mobile peut être utilisée en toute confiance, mais la version PC doit être rétrogradée

Avantages

Vous pouvez réaliser des opérations inter-domaines sans intervention back-end. Une seule fonction plus deux paramètres (demander une URL, envoyer des données

Bonne compatibilité mobile


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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