JavaScript同源策略-如何应用于不同的子域?

JavaScript同源策略-如何应用于不同的子域?,javascript,same-origin-policy,Javascript,Same Origin Policy,同源策略如何应用于以下两个域 如果内容是从server2检索的,我可以在server1上托管的页面上运行JS吗 编辑根据Daniel下面的回答,我可以使用标记在不同子域之间包含脚本,但是异步请求呢?如果我将脚本从server2下载到server1上托管的页面上会怎么样。我可以使用脚本与server2上的服务进行异步通信吗?您只能使用标记在不同子域之间包含脚本,因为它不受策略限制 使用http://www.example.com/dir/page.html作为来源(来源): 更新: 我可以使用

同源策略如何应用于以下两个域

如果内容是从server2检索的,我可以在server1上托管的页面上运行JS吗


编辑根据Daniel下面的回答,我可以使用
标记在不同子域之间包含脚本,但是异步请求呢?如果我将脚本从server2下载到server1上托管的页面上会怎么样。我可以使用脚本与server2上的服务进行异步通信吗?

您只能使用
标记在不同子域之间包含脚本,因为它不受策略限制

使用
http://www.example.com/dir/page.html
作为来源(来源):

更新:

我可以使用脚本进行通信吗 与上的服务异步 服务器2

是的,您可以使用,它利用
标记的开放策略从其他来源检索JSON

您可能还想考虑使用反向代理,如下面的堆栈溢出帖子中所述:


当然,你可以运行任何插入你电脑的脚本,不管它来自哪里。想想如何在你的页面上插入谷歌地图


您描述的是一个称为jsonp的模式。另一台主机上的服务器返回您在页面中插入的脚本,该脚本使用响应参数调用页面中的函数。

@Daniel,谢谢您的回复。我已经用后续问题编辑了这个问题。你有没有可能把你的想法加进去?Thanks@Dave:您可能想签出JSONP。您也可以考虑设置反向代理,如这里所描述的:这是一个非常彻底的答案。里程将随IE变化一点,但一般规则是同一主机,同一端口用于直接XHR。您可以从您选择的任何位置加载脚本,但就异步而言,JSONP脚本注入是您唯一没有代理的选项。
Compared URL                               Outcome  Reason
---------------------------------------------------------------------------------------------
http://www.example.com/dir/page.html       Success  Same protocol and host
http://www.example.com/dir2/other.html     Success  Same protocol and host
http://www.example.com:81/dir2/other.html  Failure  Same protocol and host but different port
https://www.example.com/dir2/other.html    Failure  Different protocol
http://en.example.com/dir2/other.html      Failure  Different host
http://example.com/dir2/other.html         Failure  Different host (exact match required)
http://v2.www.example.com/dir2/other.html  Failure  Different host (exact match required)