我在 wcf webconfig 中有以下内容
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS" />
<add name="Access-Control-Max-Age" value="1728000"/>
</customHeaders>
</httpProtocol>
服务
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "getItem", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[Description("Fetch item from database.")]
Angular 6 调用
this.http.post('http://localhost:49823/service.svc/getItem?authkey=key',
{
json data
}
).subscribe(data => {console.log(data) },err => {
console.log(err);
});
拦截器
request = request.clone({
setHeaders: {
'Content-Type': 'application/json'
}
});
它抛出错误
从源“ http://localhost:4200 ”访问“ http://localhost:49823/service.svc/getitem?authkey=key5 ”处的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。
WCF 服务在 49823 上运行,angular 6 在 4200 上运行。
由于已经在 wcf 中启用了 cors,因此无法弄清楚是什么导致了问题。
这在邮递员中工作正常