为什么我的JS无法从其他服务器加载文件?

时间:2010-07-03 16:19:06

标签: javascript

我有两个网站和两个文件:

provider.com/provide.js
viewer.com/index.html

viewer.com/index.html向用户呈现信息,并从provider.com获取此信息。文件viewer.com/index.html看起来像这样(使用jQuery):

<script type="text/javascript"
src="http://provider.com/provide.js"></script>
<script type="text/javascript">
  provide(function() { alert('works!'); });
</script>

provider.com/provide.js看起来像这样(我省略了不必要的细节):

function provide(callback)
{
  $.ajax(
    {
      'url': 'http://provider.com/',
    }
  );
}

我在所有浏览器中收到此消息:Failed to load resource: cancelled

我觉得我打破了一些安全限制。谁能解释有什么限制,如果有的话。感谢。

3 个答案:

答案 0 :(得分:4)

尽管从提供者domtain加载了provide.js文件,但它仍然在HTML页面的上下文中加载,因此它位于查看器域中。当代码尝试进行AJAX调用以从提供程序域获取信息时,您将遇到跨域限制。

您不能使用AJAX跨域加载信息。但是,您可以使用JSONP作为数据格式,然后ajax方法不会执行AJAX调用,而是使用脚本标记来加载信息,这是允许的。

答案 1 :(得分:0)

您无法请求Javascript跨域security reasons发送请求。

然而,您可以向服务器发出请求,该服务器可以检索文件并为您打印结果,然后Javascript可以请求。

答案 2 :(得分:0)

可在此处找到其他答案中描述的同源政策的简要介绍:

http://en.wikipedia.org/wiki/Same_origin_policy