关于javascript:获取请求未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头

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服务器,则需要在.htaccess文件中添加以下内容:

1
Header set Access-Control-Allow-Origin"*"


如果请求休息服务:

您需要使用Spring注释在您的REST服务的端点上允许CORS(跨源代码共享资源):

1
@CrossOrigin(origins ="http://localhost:8080")

非常好的教程:https://spring.io/guides/gs/rest-service-cors/