如何制作XHR跨域请求 - 我尝试过'Script Tag Hack',但它不起作用或者我做错了。有什么建议?
我想从B中调用域A中的脚本。
域名A: [index.html]
<head>
<script type="text/javascript" src="https://evilDomain/xhrTest.js"></script>
</head>
域B: [xhrTest.js]
$.ajax({
url: "https://evilDomain/processRequest",
success: function(result){
alert(result);
}
});
已修改:
我也尝试过以这种方式使用JSONP:
$.ajax({
url: "https://evilDomain/processRequest",
dataType: "jsonp",
success: function(result){
alert(result);
}
});
我正在使用TOMCAT容器,该解决方案是否与 Access-Control-Allow-Origin 标头相关联?
答案 0 :(得分:3)
是的,您可以将 Access-Control-Allow-Origin 标头添加到服务器响应中。这将允许您发出跨域请求。
然后,您可以根据需要使用 Access-Control-Allow-Methods 和 Access-Control-Allow-Headers 进一步自定义。
有关详细信息,请参阅https://developer.mozilla.org/en/HTTP_access_control
答案 1 :(得分:1)
使用JSONP或在您自己的域上拥有一项服务,在服务器端调用另一个域,并以此方式获取您所需的内容。
答案 2 :(得分:1)
通常,您会要求您的服务器为您执行请求。
另一种选择是让别人为你做这件事(比如雅虎的服务)。
您的问题是域B 的代码仍在域A 的上下文中执行。
因此,https://evilDomain/processRequest
仍然无法读取,因为代码正在执行为域A ,即使实际上它来自域B 。
答案 3 :(得分:1)
域B JS被包含在页面中,然后从源自域A的页面执行,因此出现问题。要执行此跨域,您需要将数据响应请求作为“脚本”本身,然后从那里解析它。