Web API .. 401(未经授权)Chrome CORS

时间:2017-08-22 16:55:26

标签: .net angular asp.net-web-api cors

我有两个网站在运行。经典WebAPI服务器和angular4客户端。 我有CORS在服务器上工作。我知道CORS不适用于chrome,除非你启动Chrome并关闭localhost的安全性。当我这样做时一切正常。

但我理解当我将localhost移到某个站点时(该站点确实使用了端口号。看起来像http://mytest:8080/info)Chrome可以正常工作。但我有同样的问题,我得到401(未经授权)。

它适用于IE没有问题,如果我运行chrome与安全关闭它也可以。

更新:

像这样固定:

在服务器上我做了自定义标题(在web.config中)

<customHeaders>
          <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" />
          <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
          <add name="Access-Control-Allow-Credentials" value="true" />
      </customHeaders>
在Global.aspx.cs中

我有

 public static void Register(HttpConfiguration config)
    {

      config.MapHttpAttributeRoutes();
      var corsAttr = new EnableCorsAttribute("http://{serveraddress}:8420", "*", "*");
      config.EnableCors(corsAttr);

      config.Routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{id}",
          defaults: new { id = RouteParameter.Optional }
      );
    }

在客户端网站上我做了像

这样的调用
var options = new RequestOptions({
        headers: new Headers({
            'Accept': 'application/json',
        }),
        withCredentials: true
    });
    return this.http.get(this.apiAddress + '/api/user', options)
        .map(res => res.json() as user);
}

0 个答案:

没有答案