同源策略如何适用于以下两个域?
如果从server2中检索内容,我可以在server1上托管的页面上运行JS吗?
编辑根据Daniel的回答,我可以使用<script>
标记在不同子域之间添加脚本,但异步请求呢?如果我将脚本从server2下载到server1上托管的页面上该怎么办?我可以使用脚本与server2上的服务异步通信吗?
答案 0 :(得分:24)
您只能使用<script>
标记在不同子域之间添加脚本,因为它不受政策约束。
使用http://www.example.com/dir/page.html
作为来源(来自Wikipedia):
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)
<强>更新强>
我可以使用脚本进行通信 与服务异步 服务器2?
是的,你可以使用JSONP,它利用<script>
标记的开放政策从其他来源检索JSON。
您可能还想考虑使用反向代理,如以下Stack Overflow帖子所示:
答案 1 :(得分:0)
当然,您可以运行任何您插入的脚本,从不介意它来自哪里。考虑如何在您的页面上插入谷歌地图。
您描述的是一种名为jsonp的模式。如果其他主机上的服务器返回您在页面中插入的脚本,则脚本会使用响应参数调用页面中的函数。