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/