外部js文件中的相同原始策略

时间:2010-09-06 10:19:30

标签: javascript ajax same-origin-policy

如果在网站http://www.mysite.com中有一个外部js文件添加为

<script src="http://www.yoursite.com/new.js"></script> 

http://www.yoursite.com/new.js js文件中,对http://www.yoursite.com/new.js

中的脚本进行了ajax调用

在这种情况下是否存在同源策略安全问题,因为它在另一个网站的网站中调用脚本?

2 个答案:

答案 0 :(得分:6)

会有问题。 new.jsmysite.com范围内运行,而不是yoursite.com

编辑:更详细的解释是:当mysite.com打开标签时,该脚本在当前页面的范围内运行。脚本的来源无关紧要:它可以是内联,本地源或远程源,它仍然被认为是mysite的一部分。

如您所知,由于原始政策相同,mysite.com中的脚本无法访问yoursite.com上的任何内容。所以你不能这样做。

作为跨源通信的高级选项,请查看jsonp。它将要求yoursite.com提供特殊处理,但如果您对两个站点都有控制权,那么这应该不是问题。

答案 1 :(得分:0)

JSONP正是您所寻找的:http://en.wikipedia.org/wiki/JSON

5000米概述是JSONP使用相同的机制来请求您在上面使用的外部脚本。区别在于您的服务器将识别这一点,并将JSON响应打包为回调方法的参数。当您的站点收到此“脚本”时,它会执行它,从而将数据直接返回到您的回调方法中。

如果您能够使用像jQuery这样的框架,那么大多数客户端都将为您透明地处理。请在此处查看:http://api.jquery.com/jQuery.getJSON/