关于crossdomain.xml:如何为简单的AJAX web应用启用CORS | 珊瑚贝

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


$.ajax 代码中的 headers 部分将标头添加到对服务器的请求中,但 CORS 标头需要出现在来自服务器的响应中。

使用 IIS,您可以在 web.config 的 <system.webServer> 部分添加带有几行的标题。添加这将使您开始 GET 请求:

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/

  • 我试试这个,但我得到这个错误:HTTP 错误 500.19 – 内部服务器错误。但这仍然对我没有帮助,因为我只是在 IIS 中测试它,因为服务器将是应用程序,服务器没有使用 IIS
  • @krnekires 如果您还没有任何其他 web.config,那么您需要的不仅仅是 system.webServer 位,它才能成为有效的 web.config。尝试使用这个:github.com/Encosia/Encosia-Samples-ASMX-CORS/blob/
  • 现在我在控制台中只有 No access-control-allow-origin note。我正在获取数据的网址可能有问题吗?这是网址:meteo.si/uploads/probase/www/fproduct/text/sl/(它是公开的)
  • @krnekires 看来您的服务器是 apache,而不是 IIS。 Apache 将忽略 web.config 文件。在 apache 上,您可以通过将 Header set Access-Control-Allow-Origin”*” 放入您的 .htaccess 来做同样的事情。


CORS 标头必须由您正在调用的服务器发送,您不能向它们提供请求本身。

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

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


来源:https://www.codenong.com/29748338/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?