我有一个从mydomain.com加载的脚本文件,它向该域发出ajax请求。但是,该脚本被加载到其他域中,这些域对其进行初始化,然后告诉它何时发出请求。我遇到了一些问题,因为浏览器认为这是一个跨域请求。我认为无论脚本文件是从哪个域加载的,它都能够向那个源发出请求吗?下面是一些示例代码:
网页地址:someotherdomain.com
<html>
<head>
<script type="text/javascript" src="http://mydomain.com/test.js"></script>
<title>Cross-Domain Ajax Test</title>
</head>
<body>
<h1>Test</h1>
<p id="ajax-response"></p>
<script type="text/javascript">
Test.testAjax();
</script>
</body>
</html>从mydomain.com加载的脚本
Test = {
testAjax: function() {
//make ajax request to http://mydomain.com/myendpoint
}
}我做错了什么?正确的方法是什么?
发布于 2011-07-12 22:30:54
我认为无论脚本文件是从哪个域加载的,它都能够向那个源发出请求吗?
不是的。原点始终是页面,而不是脚本。
发布于 2011-07-12 22:35:40
我做错了什么?
您的脚本从一个域提供服务,但在另一个域上请求脚本,这违反了跨域限制。
什么是正确的方法?
有两种可能性:
dataType = "jsonp"绕过此限制。jQuery将执行一些魔术(将调用替换为<script src="mydomain.com/endpoint" />格式的内联脚本引用),以实现此功能。发布于 2011-07-12 22:35:41
脚本的原点始终是mydomain.com!您可以使用Ajax代理(通过您的后端),也可以最终使用 (更有可能两者兼而有之,取决于您的需求)。
https://stackoverflow.com/questions/6665780
复制相似问题