Same-Origin政策并从CDN服务JS

时间:2012-09-22 12:58:18

标签: javascript same-origin-policy

我想从像Cloudflare这样的CDN提供我的JavaScript脚本。

现在我的脚本通过ajax与我的app服务器通信。当我从CDN加载这些脚本时,相同来源的策略限制不会发挥作用吗?

假设我的应用程序位于域中:

http://app.com

我从

加载我的脚本
http://cdn.com/xyz/all.js

现在,由于我的脚本是从与我的应用运行的域不同的域加载的,因此我猜相同的源策略会阻止我与我的应用进行Ajax通信。

我出错了吗?

1 个答案:

答案 0 :(得分:20)

不,它会奏效。这就是JSONP的工作原理。 脚本的“来源”是执行的页面,而不是来自的位置。

正如你所要求的,这是一个参考(我找不到更好的,但Crockford是众所周知的)

  

令人惊讶的是,src属性不受同源策略的约束。这意味着可以创建一个脚本元素,可以转到任何服务器,获取脚本并执行它。如果脚本导致JSON编码数据的传递,那么这是一个非常有用的东西。不幸的是,没有办法限制脚本或在执行之前检查脚本。它与页面中的脚本具有相同的权限。因此脚本可以访问和使用其cookie。它可以使用用户的授权访问原始服务器。它可以检查DOM和JavaScript全局对象,并发送它在世界任何地方找到的任何信息。 Script Tag Hack不安全,应该避免。

http://javascript.crockford.com/script.html

不是真正的参考:如果这不起作用,没有人可以从谷歌的CDN中包含jQuery,然后使用它的$.ajax方法。