同一域策略究竟是如何实施的?

时间:2009-05-30 12:40:26

标签: ajax subdomain xss

假设我有一个域js.mydomain.com,它指向某个IP地址,以及指向不同IP地址的其他域requests.mydomain.com。从.js下载的js.mydomain.com文件是否可以向requests.mydomain.com发出Ajax请求?

现代浏览器如何实施相同的域策略?

2 个答案:

答案 0 :(得分:11)

对您的问题的简短回答是否定的:对于AJAX调用,您只能访问与加载页面相同的主机名(和端口/方案)。

有几种解决方法:一种是在foo.example.com中创建一个充当bar.example.com反向代理的网址。只要主机名匹配,浏览器就不关心实际请求的实际位置。如果您已经拥有一个前端Apache Web服务器,这将不会太困难。

另一种选择是AJAST,它通过在文档中插入脚本标记来实现。我相信这就是Google API的运作方式。

您可以在此处找到相同原始政策的良好说明:http://code.google.com/p/browsersec/wiki/Part2

答案 1 :(得分:1)

这不起作用,因为主机名不同。如果两个页面具有相同的主机,协议和端口,则认为它们来自同一来源。

来自维基百科the same origin policy

  

术语“起源”是使用   域名,应用层   协议,以及(在大多数浏览器中)TCP   运行该文件的HTML文件的端口   脚本。考虑两种资源   当且仅限于同一来源   如果所有这些值都是正确的   相同。