预检的响应具有无效的HTTP状态代码404 - Angular 4和Web API 2
问题描述:
在服务中,我调用Web API(2)(托管在与前端角度4应用程序不同的服务器上)操作方法以检索一些信息。预检的响应具有无效的HTTP状态代码404 - Angular 4和Web API 2
操作方法需要授权,我正在使用访问令牌进行登录到应用程序后收到的令牌。现在,代码在Microsoft边缘工作正常,但给我预镀铬错误,我猜是CORS问题。不知道如何解决这个问题。有人可以帮我弄这个吗?
这是我的代码;
getCompanyInfo(id: string) {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Authorization': 'Bearer ' + this.commonService.accessToken
});
let options = new RequestOptions({ headers: headers });
let getRequestUrl = this.commonService.baseUrl + 'api/getCompanyInfo';
return this.http.get(getRequestUrl + '/' + id, options)
.map((res: any) => <CompanyInfoModel>res.json())
.do(response => console.log(response))
.catch(this.commonService.handleError);
}
请注意,这工作正常;
如果我没有使用Web API的授权访问并从标头中删除令牌。
在微软边缘有或没有访问令牌的标头。
答
没有为我工作,除了下面;我必须导入Microsoft.Owin.Cors
并在Web API的Startup.Auth.cs
的ConfigureAuth方法的顶部添加以下代码行。
app.UseCors(CorsOptions.AllowAll);
请注意: - 删除所有的设置从Web.config
和WebApiConfig.cs
启用CORS。否则,它会抱怨重复执行。
编码快乐:-)
我想'this.http.get'需要做一个OPTIONS请求首先对自己,如果有必要的照顾?你有没有检查Chrome开发工具是否真的发生? – CBroe
@CBroe感谢您的回应,我收到的chrome开发工具 - 无法加载http:// localhost:80/api/getCompanyInfo/1:预检的响应具有无效的HTTP状态代码404 – Learner
您是否看到实际的预检请求(OPTIONS方法)发生在网络面板? – CBroe