AngularJS - 仅使用 HTTP GET 时出现 CORS 错误

汉内斯

我正在尝试从 AngularJS 发出 http get 请求。它仅适用于 Internet Explorer 11。当我尝试在 Chrome、Firefox 或 Edge 中进行 POST 调用时,它无法正常工作。

我收到以下错误:

Chrome 中的 CORS 错误

这是我的 AngularJS 调用:

 $http({
              method: 'POST',
               headers: {
                'Content-Type': 'application/json'
              },
              url: URL
              }).then(function successCallback(response) {
                  console.log(response.data);

              }, function errorCallback(response) {
                console.log(response.status);
                console.log(response.headers);
                console.log(response.config);
              });

作为后端,我有一个 Java Spring MVC 应用程序,并且设置了以下标头:

    HttpHeaders responseHeader = new HttpHeaders();
    responseHeader.set("Access-Control-Allow-Origin","*");
    responseHeader.set("Access-Control-Allow-Headers:","Content-Type");
    responseHeader.set("Access-Control-Allow-Methods","POST, GET, PUT, OPTIONS, DELETE");
    responseHeader.set("Content-Type","application/json");

但是当我设置断点时,我看到 angular 永远不会到达后端!这很令人困惑,我已经在互联网上搜索了很多并尝试更改默认的 AngularJS Content-Type 标头:

$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8';

我还尝试将 POST-Request 中的 Content-Type 更改为“application/x-www-form-urlencoded” - 没有效果。

注意:后端和前端运行在同一台开发机器上。唯一的区别是端口,这就是为什么我对我收到 CORS 错误感到困惑的原因......

我只有 POST-Requests 有这个问题;GET 就像一个魅力

编辑1:

我认为这是 cors 的问题并且我使用了不同的端口,但是我可以将其关闭吗?

编辑2:

现在我尝试让它与本地 tomcat 一起工作。现在我在 Tomcat 中看到请求将到达服务器:

<< Client IP>> - - [28/Jun/2017:13:43:24 +0200] "OPTIONS <<URL>> HTTP/1.1" 403 -

响应现在是 HTTP 403。在浏览器网络选项卡中,我可以看到以下请求标头:

  Host: <<backend ip>>:8080
User-Agent: <<user agent>>
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: access-control-allow-origin,content-type
Origin: http://<<Ip of host>>
Connection: keep-alive

该请求标头的响应如下:

Content-Type: text/plain
Content-Length: 0
Date: Wed, 28 Jun 2017 11:43:24 GMT

我已经像tomcat文档中的例子一样设置了cors过滤器:http : //tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

当我发出 get 请求时,它仍在工作并且所有 CORS 标头都存在。我认为第一个 OPTIONS 请求有问题。不知道为什么tomcat在OPTIONS请求来的时候不设置CORS头。

汉内斯

我想到了。我制作了一个全新的 angularjs 测试网站。这是我的工作 angularjs 代码:

 var req = {
 method: 'POST',
 url: 'myURL',
 headers: {
   'Content-Type': undefined
 },
 data: "JSON BODY DATA"
}

$http(req).then(function successCallback(response) {
    console.log(response.data);
  }, function errorCallback(response) {
    console.log(response.data);
  });
}]);

我删除了更改默认 angularjs 标头的任何内容。我的 Spring MVC 应用程序的标题如下:

HttpHeaders responseHeader = new HttpHeaders();
responseHeader.set("Access-Control-Allow-Origin","http://<<clientip>>");
responseHeader.set("Access-Control-Allow-Headers:","Content-Type");
responseHeader.set("Access-Control-Allow-Methods","POST, GET, PUT, OPTIONS, DELETE");
responseHeader.set("Content-Type","application/json");

我不知道它现在工作的确切原因。也许是因为我修改了 AngularJS 中的默认标题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 http 请求中使用 GET 方法时出现错误域

来自分类Dev

在angularJS中使用$ http.post时出现未定义的索引错误

来自分类Dev

尝试从AngularJS到Spring MVC使用$ http.post服务时出现错误415-Maven

来自分类Dev

使用php发送GET请求时出现HTTP 400错误请求错误

来自分类Dev

使用AngularJS时出现“ .then()不是函数”错误

来自分类Dev

使用ngAudio时出现AngularJS错误

来自分类Dev

使用splice()时出现AngularJS错误

来自分类Dev

进行PUT / POST时没有HTTP资源错误[CORS问题-AngularJS + Web API 2]

来自分类Dev

进行PUT / POST时没有HTTP资源错误[CORS问题-AngularJS + Web API 2]

来自分类Dev

使用 Spotify Open API 时出现 CORS 错误

来自分类Dev

使用 httr get 时出现错误 401

来自分类Dev

使用角度路由时出现错误跨源请求仅支持协议方案:http

来自分类Dev

发出http GET请求时出现超时错误

来自分类Dev

当我使用CORS时,AngularJS $ http似乎无法正确响应

来自分类Dev

仅使用 IPython 时出现导入错误

来自分类Dev

通过 XMLHttpRequest 从 file:// URL 发送 GET 到 localhost 时出现 CORS 错误

来自分类Dev

使用ASP.NET Web API下载二进制数据时出现AngularJS GET byte []错误

来自分类Dev

使用angularJS时出现未捕获的错误:[$ injector:modulerr]

来自分类Dev

AngularJS $ http.get返回错误

来自分类Dev

使用IP地址而不是localhost时出现HTTP错误400

来自分类Dev

使用Zend_Http_Client时出现内容类型错误

来自分类Dev

使用 urllib.request 时出现 HTTP 错误

来自分类Dev

重定向时Angularjs Satellizer Twitter登录CORS错误

来自分类Dev

在使用 node.js 和 Express 构建的 api 中使用 cors 中间件时出现 CORS 错误

来自分类Dev

尝试与angularJS $ http连接时出现mongodb服务器错误

来自分类Dev

使用签名的URL将图像文件上传到Google Cloud时出现CORS错误

来自分类Dev

尝试使用Auth0对用户进行身份验证时出现CORS错误

来自分类Dev

使用Netcat时HTTP GET请求禁止403错误

来自分类Dev

使用 Spring、Angularjs 和 Ionic 框架解决 CORS 错误

Related 相关文章

  1. 1

    在 http 请求中使用 GET 方法时出现错误域

  2. 2

    在angularJS中使用$ http.post时出现未定义的索引错误

  3. 3

    尝试从AngularJS到Spring MVC使用$ http.post服务时出现错误415-Maven

  4. 4

    使用php发送GET请求时出现HTTP 400错误请求错误

  5. 5

    使用AngularJS时出现“ .then()不是函数”错误

  6. 6

    使用ngAudio时出现AngularJS错误

  7. 7

    使用splice()时出现AngularJS错误

  8. 8

    进行PUT / POST时没有HTTP资源错误[CORS问题-AngularJS + Web API 2]

  9. 9

    进行PUT / POST时没有HTTP资源错误[CORS问题-AngularJS + Web API 2]

  10. 10

    使用 Spotify Open API 时出现 CORS 错误

  11. 11

    使用 httr get 时出现错误 401

  12. 12

    使用角度路由时出现错误跨源请求仅支持协议方案:http

  13. 13

    发出http GET请求时出现超时错误

  14. 14

    当我使用CORS时,AngularJS $ http似乎无法正确响应

  15. 15

    仅使用 IPython 时出现导入错误

  16. 16

    通过 XMLHttpRequest 从 file:// URL 发送 GET 到 localhost 时出现 CORS 错误

  17. 17

    使用ASP.NET Web API下载二进制数据时出现AngularJS GET byte []错误

  18. 18

    使用angularJS时出现未捕获的错误:[$ injector:modulerr]

  19. 19

    AngularJS $ http.get返回错误

  20. 20

    使用IP地址而不是localhost时出现HTTP错误400

  21. 21

    使用Zend_Http_Client时出现内容类型错误

  22. 22

    使用 urllib.request 时出现 HTTP 错误

  23. 23

    重定向时Angularjs Satellizer Twitter登录CORS错误

  24. 24

    在使用 node.js 和 Express 构建的 api 中使用 cors 中间件时出现 CORS 错误

  25. 25

    尝试与angularJS $ http连接时出现mongodb服务器错误

  26. 26

    使用签名的URL将图像文件上传到Google Cloud时出现CORS错误

  27. 27

    尝试使用Auth0对用户进行身份验证时出现CORS错误

  28. 28

    使用Netcat时HTTP GET请求禁止403错误

  29. 29

    使用 Spring、Angularjs 和 Ionic 框架解决 CORS 错误

热门标签

归档