9
votes

Définir dynamiquement le document.Domain à iframe

J'ai un iframe qui injecte dans les pages, l'a appelé "Helper". Donc, en raison de la même politique d'origine, je dois définir le domaine iframe identique est le domaine de la fenêtre parent. Mais je ne peux pas avoir accès au domaine de la fenêtre parent. Comment peut-il être résolu?

Ce code fonctionne actuellement pour les domaines de 2e niveau: xxx

mais j'ai besoin de l'obtenir de la fenêtre parent plutôt que de compter sur le 2ème niveau domaine


4 commentaires

Votre iframe vient d'un autre serveur? Ensuite, peu importe ce que vous définissez document. Il doit venir de ce domaine


Si les dernières parties du domaine n'est pas la même, l'oubliez-le. Il est utilisé pour faire correspondre des ventes.domain.com aux shopping.domain.com et non site.sales.com avec site.shopping.com


Oui, ce sera la même chose, je viens de savoir chaud pour l'obtenir de la fenêtre mère.


En outre, vous êtes peut-être intéressé par un numéro de port de string comme celui-ci: document.domain = domainName.split (":") [0];


4 Réponses :


5
votes

En bref, il ne peut pas. Réglage document.domain ne fonctionne que lorsque l'iframe et la fenêtre contenant font réellement partie du même domaine. Si un navigateur devait vous laisser définir document.domain sur autre chose que le domaine que vous étiez réellement, ce serait une violation de la sécurité. Considérez, tout script malveillant pourrait simplement dire «non vraiment, croyez-moi sur celui-ci» et le navigateur distrait essentiellement: «Oh, d'accord, puisque vous avez demandé si bien, voici toute la permission que vous voulez».

document.domain ne peut être défini que sur un domaine parent du domaine actuel de la page. Si un iframe et une fenêtre contenant ne partagent pas au moins cela, aucun navigateur ne leur permettra de croiser.

sauf si j'ai mal compris votre question. N'hésitez pas à poster quelques exemples à clarifier.


0 commentaires

1
votes

en supposant que votre parent peut être a.domain.com et votre iframe est b.domain.com - alors vous pouvez faire ce que vous tentez. Si vous devez savoir ce que le parent est, transmettez-le dans l'attribut Iframe SRC ou essayez document.referrer


2 commentaires

Par exemple, j'ai 6.weather.ch Domaine parent, et si j'utilise mon code, j'ai le domaine iframe washer.ch et la permission refusée


Ensuite, le code des parents doit définir son document.domain sur "météo.ch" ou ".weather.ch" (je ne me souviens pas s'il est avec un point de dirigeant ou non)



8
votes

Je ne sais pas si cela vous aidera, mais j'utilise cela dans iframe xxx

donc je vérifie si le domaine déjà défini a exception ang essayer de deviner le domaine, dans les deux cas, il y a Pas besoin de définir un domaine

éditer: Plus correctement pour utiliser Post Message pour définir le domaine si nécessaire


0 commentaires

-1
votes

Ajouter un document.Domain = 'Your.Domain' dans les pages.

Comme ça. N'oubliez pas les deux parents.top

document.domain = 'corp.local'; seulement parent comme

document.domain = 'Corp'; ne fonctionnera pas.

Comme je l'ai mentionné ici. JavaScript Obtenez la page actuelle de l'URL d'Iframe sur la sous-domaine

Ce document a aidé. http://javascript.info/Tutorial/same-origin-security-policy


0 commentaires