奇怪的Javascript/跨站点cookie问题

3
我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我在B域上运行了一个PHP脚本,当调用时会生成一些JS。

这个想法是,在给定的html页面中,我可以有:

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

当页面加载时,脚本被调用并在本地页面上生成和运行JS。
问题在于myscript.php依赖于B域cookies。如果我在地址栏中输入http://b.domain/myscript.php,脚本就可以正常工作,并且我可以在浏览器窗口中看到JS文本。
但是,当我将上述引用行包含在运行在另一个Web服务器A上的网页中时,它不起作用。 JS仍然被生成,但是不正确,因为脚本无法访问任何cookie。
所以,简而言之,直接访问脚本,cookie可用,一切正常。 通过从另一个域提供的页面调用脚本,则无法访问cookie。
我不明白为什么在调用运行在B域上的脚本时,浏览器似乎没有发送B的cookie?

提供操作系统和浏览器版本可能有助于获得答案。或者这在所有浏览器中都发生吗? - jsight
浏览器是Firefox(最新版本),A域是我的本地机器上的apache(WinXP),B域是运行在Redhat Linux服务器上的apache。通过firebug进行快速检查,发现B的cookies未被包含在对myscript.php的调用中。 - PaulJWilliams
1个回答

1

但是在B上运行的脚本只需要B的cookies。不需要将任何cookie发送到除设置它们的域之外的任何域。 - PaulJWilliams
脚本来自哪个服务器并不重要;脚本只能使用来自页面的域的 cookie 进行操作。否则,例如,我可以在我的网站上包含托管在 Google Code 上的脚本,并且当您访问该页面时,我的网站可以使用该脚本窃取您的 Google cookie,从而使我能够访问您的 GMail 帐户。 - NickFitz
脚本不使用cookies - 只有服务器端脚本生成客户端JS以在原始页面上运行。 - PaulJWilliams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接