POSTMAN工作时发生角度POST交叉原点错误

Angular POST cross origin error while POSTMAN works

本文关键字:POST 原点 错误 工作 POSTMAN      更新时间:2023-09-26

我尝试从我的角度登录服务进行POST:

$http.post('https://xyz/login',
            {
                headers: {
                    'Content-type': 'application/json',
                    'Accept': 'application/json',
                    'signature': 'asd'
                }

我得到了这个错误:

XMLHttpRequest cannot load https://xyz/login. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:1337' is therefore not allowed access.

我试过这个标题:

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

还有这些:

"Access-Control-Allow-Origin": "*";
"Access-Control-Allow-Headers": "X-Requested-With";
"Access-Control-Allow-Methods": "GET, POST", "PUT", "DELETE";

有趣的是,POSTMAN是有效的。我该怎么办?

谢谢。

您的请求包含非简单标头Content-typesignature,它们必须包含在响应的Access-Control-Allow-Headers标头中。

Content-type有时是一个简单的标头,但仅适用于特定值。application/json不是这些值之一,它会导致Content-type变得不简单。)

在服务器的飞行前响应中将Content-type添加到Access-Control-Allow-Headers

POSTMAN不受同源策略的约束,因此它不需要服务器的CORS支持。

您的浏览器是否在发布前发出OPTIONS请求?检查"NET"选项卡我以前遇到过浏览器或Angular发出OPTIONS请求的问题(不知道是哪一个),而服务器没有。。。

"访问控制允许方法":"GET,POST","PUT","DELETE","OPTIONS";

不确定您是否已经拥有所需的信息。但在我的本地web服务器中,当我使用poster发出http请求时,它会在标题中添加以下内容:

标头:{host:'localhost',connection:"保持活动",pragma:"无缓存","缓存控制":"无缓存","用户代理":"Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/47.02526.106 Safari/537.36",accept:'/',referr:'http://localhost/',"accept encoding":"gzip,deflate,sdch",'接受语言':'en-US,en;q=0.8'},

下面是我在rawHeaders中看到的内容:["主机",'localhost','连接',"保持活力","Pragma","无缓存",'缓存控制',"无缓存",'用户代理',"Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/47.02526.106 Safari/537.36",'接受','/','裁判','http://localhost/','接受编码','gzip,deflate,sdch','接受语言','en-US,en;q=0.8'],

所以,也许你只需要假装你的客户端是一个公认的浏览器客户端。