23

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

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

假设我的应用在域中:

http://app.com

我从

http://cdn.com/xyz/all.js

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

我有什么问题吗?

4

1 回答 1

23

不,它会起作用的。这就是 JSONP 起作用的原因。脚本的“来源”是它执行的页面,而不是它的来源。

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

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

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

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

于 2012-09-22T12:59:58.140 回答