MVC Web API错误代码SCRIPT7002

作为参考,我使用的是Windows 10和Visual Studio 2017。

我有一个MVC web api和相应的Web应用程序,并具有登录function。 我只是尝试使用IE进行调试。 每当我使用GET调用时,我遇到以下错误:SCRIPT7002:XMLHttpRequest:网络错误0x80070005,访问被拒绝。 我已经配置并启用了CORS,所以我完全不知道为什么这不起作用。

在我的WebApiConfig文件中,我有这个:

public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.EnableCors(); } 

然后在Web.config文件中我有这个:

         

调用本身是使用以下代码进行的:

 var returnValue = []; console.log(localStorage.getItem('accessToken')); jQuery.support.cors = true; if (window.XMLHttpRequest) { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", 'http://localhost:60690/api/ProfilePicture?Username=' + username, false); xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); xmlhttp.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('accessToken')); xmlhttp.send(); if (xmlhttp.status == 200) { returnValue = jQuery.parseJSON(xmlhttp.responseText); } } return returnValue; 

再次,我只是想尝试调试。 当项目部署时,它们将在同一个域上,因此CORS无关紧要。 我错过了什么?

好吧,我终于弄明白了。 这是我做的:

  1. 在Web.config文件中,删除CustomHeader部分。 摆脱一切。
  2. 发现这个其他StackOverflow问题: OWIN上的CORS和访问/令牌导致’Access-Control-Allow-Origin’错误 。 具有讽刺意味的是,大多数投票的答案是最能帮助我的答案。 我在以下行中添加了GrantResourceOwnerCredentials类:

    context.Response.Headers.Add(“Access-Control-Allow-Origin”,new [] {“*”});

  3. 进入每个控制器并在顶部添加以下行:

    [EnableCors(起源:“ http:// localhost:53942 ”,标题:“ ”,方法:“ ”,SupportsCredentials = true)]

一旦我这样做,它开始工作。