如何为简单的AJAX Web应用程序启用CORS

时间:2015-04-20 12:47:48

标签: ajax crossdomain.xml

我已经搜索了很多关于AJAX调用CORS的解决方案,但我仍然无法从其他服务器获取XML数据。

这是控制台注释:

XMLHttpRequest无法加载url.xml。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许来源“http://localhost”访问

我按照以下说明操作:http://www.html5rocks.com/en/tutorials/cors/部分:来自jQuery的CORS,这是我尝试的代码:

$.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

2 个答案:

答案 0 :(得分:2)

headers代码中的$.ajax部分会将请求添加到服务器,但是来自上需要存在CORS标头>服务器。

使用IIS,您可以在<system.webServer>的{​​{1}}部分添加几行代码。添加此项将使您开始使用GET请求:

web.config

有关详情,请参阅此帖子:http://encosia.com/using-cors-to-access-asp-net-services-across-domains/

答案 1 :(得分:1)

您正在拨打的服务器必须发送发送,您无法向他们提供请求本身。

在跨域发出请求时,您的浏览器会在实际请求数据之前执行预检请求以获取相关的CORS标头(我相信这会使用OPTION方法)。

如果来自预检的CORS标头包含当前来源或与之匹配的通配符,则浏览器将继续使用实际请求并获取一些数据。