\0_ Firefox, la communication inter-iframes et l'importance du choix de ses noms de domaines
mardi 06 décembre 2011
Là où je travaille, je développe un site interne sur le modèle de netvibes ou iGoogle, autrement dit un site avec plein de boiboites qu'on peut déplacer à sa guise.L'affichage du contenu des boites se fait dans des iframes (ne froncez pas les sourcils, c'est chouette les iframes), qui doivent parfois communiquer en Javascript avec le site qui les contient. Normalement, ce genre de choses est strictly verboten pour des raisons évidentes de sécurité. Il existe toutefois un moyen de faire se causer tout ce petit monde si les iframes sont hébergées sur le même domaine ou dans des sous-domaines du même domaine. L'astuce consiste à renseigner la propriété Javascript document.domain des iframes et du site qui les contient avec le nom de domaine principal. Donc si votre site principal est www.toto.com et que le contenu des boites est hébergé sur boites.toto.com, il suffira de mettre "toto.com" dans document.domain.
Notez que cela doit être fait même si une page est déjà hébergée sur toto.com (le communication inter-iframes n'est pas possible tant qu'on n'a pas explicitement écrit une valeur dans document.domain).
Lors de mes tests, tout a très bien fonctionné dans Firefox, Chrome et IE, mais lorsque j'ai envoyé ça sur le serveur de test, ça ne fonctionnait plus que dans Chrome et IE. En grand philosophe, j'ai alors pensé "WTF ?! oO". Une erreur Javascript se produisait au moment où je mettais le nom de mon domaine dans document.domain : la valeur ne plaisait pas à Firefox (pour des raisons de sécurité), qui refusait donc l'écriture dans la propriété. À force de recherches, j'ai fini par atterrir dans le code de Firefox, où j'ai réalisé qu'il ne traite pas tous les noms de domaine de la même manière. En effet, pour les TLD comme celui de l'Angleterre, où le gouvernement s'est réservé *.uk et n'a laissé que les adresses en *.co.uk aux peons que nous sommes, Firefox va vérifier que le domaine que vous souhaitez inscrire dans document.domain possède bien trois composantes (genre "toto.co.uk").
Pas de bol, j'utilisais l'extension .qa, qui fonctionne comme le .uk, d'où le fait que Firefox me refuse la valeur que je souhaitais écrire dans document.domain.
On a donc changé de .qa vers .tst et hop, case closed.
Moralité, même pour des domaines à usage uniquement interne, faites attention au TLD que vous choisissez.
Réactions :
jeudi 08 décembre 2011 - 23:01
(désolé, pas pu me retenir, Spa courant de griller le reptile à carapace sur un post sur Peuw... :-)
Tetram9
vendredi 09 décembre 2011 - 12:28
btw, c'est comment la vie dans le fin fond du 77 ? Tu survis ?
Tetram9
vendredi 09 décembre 2011 - 12:37
Pas de gros cons de voisins, pas de bruit tout le temps, un jardin, un potager, et en plus on voit bien les étoiles, bref ça me plait bien :)
nop
(http://www.peuw.net)
vendredi 09 décembre 2011 - 12:57
Tu as oublié que pour faire la foire tranquille c'est pas mal non plus... Les gens bourrés peuvent aller vomir dans le potager, ça fait de l'engrais. C'est une situation gagnant-gagnant :-)
Tetram9
mardi 15 janvier 2013 - 18:21
nop
(http://www.peuw.net)




jeudi 08 décembre 2011 - 23:01
(désolé, pas pu me retenir, Spa courant de griller le reptile à carapace sur un post sur Peuw... :-)