预检的响应具有无效的HTTP状态代码404 - Angular 4和Web API 2

预检的响应具有无效的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); 
    } 

请注意,这工作正常;

  1. 如果我没有使用Web API的授权访问并从标头中删除令牌。

  2. 在微软边缘有或没有访问令牌的标头。

+0

我想'this.http.get'需要做一个OPTIONS请求首先对自己,如果有必要的照顾?你有没有检查Chrome开发工具是否真的发生? – CBroe

+0

@CBroe感谢您的回应,我收到的chrome开发工具 - 无法加载http:// localhost:80/api/getCompanyInfo/1:预检的响应具有无效的HTTP状态代码404 – Learner

+0

您是否看到实际的预检请求(OPTIONS方法)发生在网络面板? – CBroe

没有为我工作,除了下面;我必须导入Microsoft.Owin.Cors并在Web API的Startup.Auth.cs的ConfigureAuth方法的顶部添加以下代码行。

app.UseCors(CorsOptions.AllowAll); 

请注意: - 删除所有的设置从Web.configWebApiConfig.cs启用CORS。否则,它会抱怨重复执行。

编码快乐:-)

+0

我得到No请求的资源上存在'Access-Control-Allow-Origin'标头。即使在添加上面的行后。如果我在配置文件中添加额外设置以启用重复的内核。 – bomaboom

+0

@bomaboom确保您的控制器中没有与核心相关的任何属性。 – Learner

+0

我没有任何与控制器中的核心相关的属性。顺便说一句我得到这个错误,当我打电话到owin管道获取令牌。 – bomaboom