我有两个网站和两个文件:
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
。
我觉得我打破了一些安全限制。谁能解释有什么限制,如果有的话。感谢。
答案 0 :(得分:4)
尽管从提供者domtain加载了provide.js文件,但它仍然在HTML页面的上下文中加载,因此它位于查看器域中。当代码尝试进行AJAX调用以从提供程序域获取信息时,您将遇到跨域限制。
您不能使用AJAX跨域加载信息。但是,您可以使用JSONP作为数据格式,然后ajax
方法不会执行AJAX调用,而是使用脚本标记来加载信息,这是允许的。
答案 1 :(得分:0)
您无法请求Javascript跨域security reasons发送请求。
然而,您可以向服务器发出请求,该服务器可以检索文件并为您打印结果,然后Javascript可以请求。
答案 2 :(得分:0)
可在此处找到其他答案中描述的同源政策的简要介绍: