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