首页 文章

获取请求没有't pass access control check: No ' Access-Control-Allow-Origin'标头出现在请求的资源上

提问于
浏览
57

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

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头 . 因此不允许原点'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 回答

  • 33

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

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

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

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

    In case of Request to a REST Service:

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

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

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

相关问题