您好,我正在使用Angular 6,并且正在尝试发表http帖子。
我知道用户允许
使用多个来源 <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*"/> </customHeaders>
我的代码:
let data = this.http.post(
this.base_url + this.walletControllerSubUrl +"login",
{username: "exampleuser", password: "Pass123!"}
);
data.subscribe(data => console.log(data));
console.log("data" + data);
return data;
我总是会收到错误:
“对预检请求的响应未通过访问控制检查:'Access-Control-Allow-Origin'标头包含多个值'http://localhost:8100,*',但仅允许一个值”
但是我现在也注意到我的标题似乎为空
headers: Object { normalizedNames: Map(0), lazyUpdate: null, headers: Map(0) }
当我什至没有传递任何内容时,会导致标题为空的原因 标头?
除了AngularJS之外,还有另一个应用程序可以在同一篇文章中很好地运行。
是什么原因造成的?
答案 0 :(得分:2)
最近我遇到了相同的错误,只需添加proxy.json
文件,该文件包含一个定义服务器真实代理的json并将其添加到启动脚本中
答案 1 :(得分:2)
使用CORS的现代浏览器将尝试发送飞行前请求,通常是OPTIONS调用。它期望服务器响应,并在响应中带有Access-Control-Allow-Origin标头。但是,合规标准限制此响应标头在该标头(或通配符*)中仅包含 一个 URL。
您要命中的服务器似乎正在发送多个值。
您需要修复服务器响应,以便仅发送回通配符或通过代理进行请求。
编辑: 您的标头为空,因为除非使用withCredentials requestOptions,否则标头不会与预检请求一起发送。