获取请求没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上

时间:2015-11-20 06:15:42

标签: javascript ajax

我正在尝试从我的应用程序向Tomcat服务器发送Ajax请求,但是我收到此错误(我的网络应用程序在Chrome上运行):

  

对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' null'因此不允许访问。响应的HTTP状态代码为403。

我尝试过使用

'Access-Control-Allow-Origin' : 'http://localhost:8080/app',

但它没有用。

我的Ajax代码:

 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);
          }
     });

2 个答案:

答案 0 :(得分:33)

基本上,要生成跨域AJAX请求,请求的服务器应允许跨源共享资源(CORS)。您可以从这里阅读更多相关信息: http://www.html5rocks.com/en/tutorials/cors/

在您的方案中,您在客户端中设置标题,实际上需要将其设置为http://localhost:8080/app服务器端代码。

如果您使用的是PHP Apache服务器,则需要在.htaccess文件中添加以下内容:

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

答案 1 :(得分:10)

如果是请求REST服务:

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

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

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