2009-07-23 7 views
3

J'ai un script PHP qui s'exécute sur le domaine B qui, lorsqu'il est appelé, génère des JS.Etrange problème de cookies JavaScript/inter-sites

L'idée est que dans une page html je ne peux en avoir:

<script src="http://b.domain/myscript.php"></script> 

Ainsi, lorsque la page se charge, le script est appelé et la JS est généré et exécuter sur la page locale.

Le problème est que myscript.php dépend des cookies de domaine de B. Si je tape http://b.domain/myscript.php dans ma barre d'adresse, le script fonctionne bien, et je vois le texte JS dans la fenêtre du navigateur. Mais quand j'inclus la ligne citée ci-dessus dans une page web fonctionnant sur un serveur web différent, appelez ça, ça ne marche pas. Le JS est toujours généré, mais est incorrect, car aucun des cookies n'est disponible pour le script. Bref, accéder au script directement, les cookies sont disponibles, tout va bien. Accéder au script via un appel à partir d'une page provenant d'un autre domaine et il n'a pas accès aux cookies.

Je ne comprends pas pourquoi, dans un appel à un script s'exécutant sur le domaine B, le navigateur ne semble pas envoyer les cookies de B?

+0

Fournir les versions du système d'exploitation et du navigateur permettrait probablement d'obtenir une réponse. Ou est-ce que cela arrive dans tous les navigateurs? – jsight

+0

Le navigateur est Firefox (dernière version), le domaine A est apache sur ma machine locale (WinXP), le domaine B est apache sur une machine Linux Redhat. Une vérification rapide avec firebug montre que les cookies de B ne sont pas inclus dans l'appel à myscript.php – PaulJWilliams

Répondre

1

Ceci est une fonction de sécurité. Les informations sur les cookies ne sont jamais mises à la disposition d'un domaine autre que celui qui a défini le cookie. Voir: http://en.wikipedia.org/wiki/Cross-site_scripting pour plus d'informations.

+0

Mais le script qui s'exécute sur B n'a besoin que des cookies de B. Aucun cookie ne doit être envoyé à un domaine autre que celui qui les a définis. – PaulJWilliams

+0

Peu importe de quel serveur provient le _script_; le script ne peut fonctionner qu'avec des cookies du domaine d'origine de _page_. Sinon, je pourrais, par exemple, inclure un script hébergé chez Google Code sur mon site et, lorsque vous avez visité cette page, mon site pourrait utiliser le script pour voler votre cookie Google, me donnant accès à votre compte GMail. – NickFitz

+0

Le script n'utilise pas de cookies - seul le script côté serveur qui génère le JS côté client s'exécute sur la page d'origine. – PaulJWilliams

Questions connexes