如果在网站http://www.mysite.com
中有一个外部 js 文件添加为
<script src="http://www.yoursite.com/new.js"></script>
在http://www.yoursite.com/new.js
js 文件中,有一个对脚本的 ajax 调用http://www.yoursite.com/new.js
在这种情况下是否会出现同源策略安全问题,因为它是从另一个网站调用站点中的脚本?
如果在网站http://www.mysite.com
中有一个外部 js 文件添加为
<script src="http://www.yoursite.com/new.js"></script>
在http://www.yoursite.com/new.js
js 文件中,有一个对脚本的 ajax 调用http://www.yoursite.com/new.js
在这种情况下是否会出现同源策略安全问题,因为它是从另一个网站调用站点中的脚本?
会有问题。new.js
运行在范围内mysite.com
,不是yoursite.com
。
编辑:更详细的解释是:当 mysite.com 打开一个标签时,该脚本在当前页面的范围内运行。脚本的来源无关紧要:它可以是内联、本地源或远程源,它仍然被认为是 mysite 的一部分。
如您所知,由于同源策略,mysite.com 中的脚本无法访问 yoursite.com 上的任何内容。所以你不能这样做。
作为跨域通信的高级选项,请查看jsonp。它将要求 yoursite.com 提供特殊处理,但如果您对两个站点都有控制权,那么这应该不是问题。
JSONP 正是您正在寻找的:http ://en.wikipedia.org/wiki/JSON
5,000m 的概述是 JSONP 使用与您在上面使用的相同的机制来请求外部脚本。不同之处在于您的服务器将识别这一点并将 JSON 响应打包为回调方法的参数。当您的站点收到此“脚本”时,它会执行它,从而将数据直接返回到您的回调方法中。
如果您能够使用像 jQuery 这样的框架,那么大部分客户端都将为您透明地处理。在这里查看:http: //api.jquery.com/jQuery.getJSON/