Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Web API。。401(未经授权)铬合金_.net_Angular_Asp.net Web Api_Cors - Fatal编程技术网

.net Web API。。401(未经授权)铬合金

.net Web API。。401(未经授权)铬合金,.net,angular,asp.net-web-api,cors,.net,Angular,Asp.net Web Api,Cors,我有两个网站在运行。经典的WebAPI服务器和angular4客户端。 我有COR在服务器上工作。我知道CORS不会与chrome一起工作,除非您在本地主机安全关闭的情况下启动chrome。当我这样做的时候,一切都很好 但我明白,当我从localhost迁移到一个站点(该站点确实使用了一个端口号。看起来像)时,Chrome就可以正常工作了。但我有同样的问题,我得到401(未经授权) 它可以在IE上运行,没问题,如果我在关闭安全的情况下运行chrome,它也可以运行 更新: 修正如下: 在服务器上

我有两个网站在运行。经典的WebAPI服务器和angular4客户端。 我有COR在服务器上工作。我知道CORS不会与chrome一起工作,除非您在本地主机安全关闭的情况下启动chrome。当我这样做的时候,一切都很好

但我明白,当我从localhost迁移到一个站点(该站点确实使用了一个端口号。看起来像)时,Chrome就可以正常工作了。但我有同样的问题,我得到401(未经授权)

它可以在IE上运行,没问题,如果我在关闭安全的情况下运行chrome,它也可以运行

更新:

修正如下:

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

在客户网站上,我打了个电话

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);
}

我读到你不能用*来控制Chrome的Allow Origin。因此,我添加了服务器,它是未来的形式。还是不行。我了解到,对于IIS6,您不能将访问控制允许源添加到web.config。所以我添加了一个过滤器来添加响应头。还是。。Chrome上出现同样的错误。我的响应看起来像:访问控制允许标题:X-AspNet-Version、X-Powered-By、日期、服务器、接受、接受编码、接受语言、缓存控制、连接、内容长度、内容类型、主机、来源、Pragma、Referer、用户代理访问控制允许方法:GET、POST、PUT、DELETE、,选项访问控制允许原点:缓存控制:privateI读取您不能使用*进行访问控制允许原点与Chrome。因此,我添加了服务器,它是未来的形式。还是不行。我了解到,对于IIS6,您不能将访问控制允许源添加到web.config。所以我添加了一个过滤器来添加响应头。还是。。Chrome上出现同样的错误。我的响应看起来像:访问控制允许标题:X-AspNet-Version、X-Powered-By、日期、服务器、接受、接受编码、接受语言、缓存控制、连接、内容长度、内容类型、主机、来源、Pragma、Referer、用户代理访问控制允许方法:GET、POST、PUT、DELETE、,选项访问控制允许来源:缓存控制:专用
 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);
}