How to enable CORS for simple AJAX web application
我已经搜索了很多关于 AJAX 调用 CORS 的解决方案,但我仍然无法从其他服务器获取 XML 数据。
这是控制台注释:
XMLHttpRequest 无法加载 url.xml。请求的资源上不存在"Access-Control-Allow-Origin"标头。因此不允许访问源"http://localhost"
我已遵循以下说明:http://www.html5rocks.com/en/tutorials/cors/ 部分:来自 jQuery 的 CORS,这是我尝试的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $.ajax({ type:'GET', url:'http://www.someurl.xml', contentType:'text/plain', xhrFields:{ withCredentials: false }, headers: { 'Access-Control-Allow-Origin':'http://localhost:8080', 'Access-Control-Allow-Method':'GET', 'Access-Control-Allow-Headers':'Content-Type,x-requested-with,Authorization,Access-Control-Allow-Origin' }, success: function(data){ var test = data; } }); |
我知道这个问题已经被问过很多次了,但没有答案可以帮助解决我的问题。
为了在 localhost 中进行测试,我使用的是 IIS 8.5
使用 IIS,您可以在
1 2 3 4 5 6 7 | <system.webServer> <httpProtocol> <customHeaders> </customHeaders> </httpProtocol> </system.webServer> |
有关更多信息,请参阅此帖子:http://encosia.com/using-cors-to-access-asp-net-services-across-domains/
CORS 标头必须由您正在调用的服务器发送,您不能向它们提供请求本身。
当跨域发出请求时,您的浏览器将在实际请求数据之前执行预检请求以获取相关的 CORS 标头(我相信这使用了 OPTION 方法)。
如果来自 preflight 的 CORS 标头包含当前来源或与之匹配的通配符,则浏览器将继续处理实际请求并获取一些数据。