Getting request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource
我试图从我的应用程序向Tomcat服务器发送Ajax请求,但我遇到了此错误(我的Web应用程序运行在Chrome上):
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 403.
我试过用
1 | 'Access-Control-Allow-Origin' : 'http://localhost:8080/app', |
但它不起作用。
我的AJAX代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var arr = [1]; $.ajax({ url: 'http://localhost:8080/app', type: 'POST', contentType:'application/json', headers: { 'Access-Control-Allow-Origin' : 'http://localhost:8080', }, data: JSON.stringify(arr[0]), success: function(data){ //On ajax success do this alert(data); } }); |
基本上,为了发出跨域的Ajax请求,被请求的服务器应该允许跨源共享资源(CORS)。您可以从这里了解更多信息:http://www.html5rocks.com/en/tutorials/cors/
在您的场景中,您正在设置客户机中的头,实际上需要将其设置为http://localhost:8080/app-server-side-code。
如果您使用的是php-apache服务器,则需要在
1 | Header set Access-Control-Allow-Origin"*" |
如果请求休息服务:
您需要使用Spring注释在您的REST服务的端点上允许CORS(跨源代码共享资源):
1 | @CrossOrigin(origins ="http://localhost:8080") |
非常好的教程:https://spring.io/guides/gs/rest-service-cors/