Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 - Fatal编程技术网

Javascript 为什么我的JS可以';无法从其他服务器加载文档?

Javascript 为什么我的JS可以';无法从其他服务器加载文档?,javascript,Javascript,我有两个网站和两个文件: provider.com/provide.js viewer.com/index.html viewer.com/index.html向用户呈现信息,并从provider.com获取此信息。文件viewer.com/index.html如下所示(使用jQuery): 我在所有浏览器中都收到此消息:加载资源失败:已取消 我有一种感觉,我打破了一些安全限制。谁能解释一下有什么限制,如果有的话。谢谢。尽管provide.js文件是从提供程序域加载的,但它仍然加载在HTML页

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

provider.com/provide.js
viewer.com/index.html
viewer.com/index.html
向用户呈现信息,并从
provider.com
获取此信息。文件
viewer.com/index.html
如下所示(使用jQuery):

我在所有浏览器中都收到此消息:
加载资源失败:已取消


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

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


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

例如,您不能请求Javascript跨域发送请求


但是,您可以向服务器发出请求,服务器可以检索文件并打印结果,然后Javascript可以请求这些文件和结果。

有关同源策略的简要介绍,请参见以下内容:


所以,他应该在$.ajax调用中添加
数据类型:'jsonp'
,对吗?@Alex:是的。当然,服务器返回的内容必须是JSONP格式。
<script type="text/javascript"
src="http://provider.com/provide.js"></script>
<script type="text/javascript">
  provide(function() { alert('works!'); });
</script>
function provide(callback)
{
  $.ajax(
    {
      'url': 'http://provider.com/',
    }
  );
}