Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 外部js文件中的同源策略_Javascript_Ajax_Same Origin Policy - Fatal编程技术网

Javascript 外部js文件中的同源策略

Javascript 外部js文件中的同源策略,javascript,ajax,same-origin-policy,Javascript,Ajax,Same Origin Policy,如果在网站http://www.mysite.com添加了一个外部js文件作为 <script src="http://www.yoursite.com/new.js"></script> 在http://www.yoursite.com/new.jsjs文件,在js文件中有一个对脚本的ajax调用http://www.yoursite.com/new.js 在这种情况下,当它从另一个网站调用站点中的脚本时,是否会出现同源策略安全问题?将出现问题new.js在my

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

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

http://www.yoursite.com/new.js
js文件,在
js文件中有一个对脚本的ajax调用http://www.yoursite.com/new.js


在这种情况下,当它从另一个网站调用站点中的脚本时,是否会出现同源策略安全问题?

将出现问题
new.js
mysite.com
的范围内运行,而不是
yoursite.com

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

正如您所知,由于同源策略,mysite.com中的脚本无法访问yoursite.com上的任何内容。所以你不能这么做


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

JSONP正是您想要的:

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


如果您能够使用像jQuery这样的框架,那么大部分客户端都可以透明地为您处理。请在此处查看:

中有一句话->“跨域限制意味着您只能从浏览器通信回提供JavaScript的域。”所以我怀疑外部javascript文件上的脚本是否可以访问提供js文件的站点,即使它运行在不同的网站上。@anish。使用标签,网页可以从任何在线资源加载脚本,对吗?那么,如果这个脚本标记的URL包含名称中的数据,比如…,并且服务器返回了合法的js,那么问题是什么?现在,如果合法的javascript实际上是一个JSON编码的对象,那么它也可以是任何东西。如果您的合法JS是“回调(JSON_编码的_数据)”,那么,一旦浏览器执行了脚本,它就会将您的数据jsut填充到回调函数中。这正是JSONP所做的。相信我,它工作得很好。在blog.timothyfisher.com/?p=277中有一句话->“跨域限制意味着您只能从浏览器通信回提供JavaScript的域。”所以我怀疑外部javascript文件上的脚本是否可以访问提供js文件的站点,即使它运行在不同的网站上。@anish-m。我不确定我是否理解你所说的,但我可以向你保证(因为我已经做了很多次),使用JSONP,你可以有效地向第三方服务器发送和接收数据(包括任意对象等)。这(非常)有效地绕过了XMLHttpRequest受()限制的同一源策略。