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/',
}
);
}