Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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
Javascript 未经授权的401-on-Post-request Windows身份验证&x2B;核心2.2 WebAPI_Javascript_Angular - Fatal编程技术网

Javascript 未经授权的401-on-Post-request Windows身份验证&x2B;核心2.2 WebAPI

Javascript 未经授权的401-on-Post-request Windows身份验证&x2B;核心2.2 WebAPI,javascript,angular,Javascript,Angular,我将.core2.2与WebAPI一起使用。 该解决方案托管在IIS10 Windows Server 2016上,Windows身份验证应该是我的服务的唯一身份验证方法。 在Angular 7中,当我使用凭证设置为true的选项发出GET请求时。一切正常。它对这个Post请求无论如何都不起作用,并且响应是未经授权的。 仅供参考,APi和服务器APi位于不同的服务器上 post<T>(path, body = {}): Observable<T> { let req

我将.core2.2与WebAPI一起使用。 该解决方案托管在IIS10 Windows Server 2016上,Windows身份验证应该是我的服务的唯一身份验证方法。 在Angular 7中,当我使用凭证设置为true的选项发出GET请求时。一切正常。它对这个Post请求无论如何都不起作用,并且响应是未经授权的。 仅供参考,APi和服务器APi位于不同的服务器上

post<T>(path, body = {}): Observable<T> {
   let requestheaders = new HttpHeaders({
      'Content-Type': 'application/json',
   });
   return this.http.post(this.getUrl(path), '{}', 
   { headers: requestheaders, withCredentials: true }) as Observable<T>;
}

有关于如何处理此问题的线索吗?

  • 在后端,将AllowCredentialsSupportsCredentials属性设置为true
  • 在后端,不要将通配符(
    *
    )放在允许源代码中。添加您的前端URL
像这样的

.NET核心

services.AddCors(c =>
{
   c.AddPolicy("AllowOrigin",
       options => options
              .WithOrigins("http://localhost:4200") //Important
              .AllowAnyMethod()
              .AllowAnyHeader()
              .AllowCredentials() //Important
    );
});

.NET 4.6

[EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*", SupportsCredentials = true)]
  • 在后端,将AllowCredentialsSupportsCredentials属性设置为true
  • 在后端,不要将通配符(
    *
    )放在允许源代码中。添加您的前端URL
像这样的

.NET核心

services.AddCors(c =>
{
   c.AddPolicy("AllowOrigin",
       options => options
              .WithOrigins("http://localhost:4200") //Important
              .AllowAnyMethod()
              .AllowAnyHeader()
              .AllowCredentials() //Important
    );
});

.NET 4.6

[EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*", SupportsCredentials = true)]

谢谢你的评论,但很遗憾……不,这不是cors策略,因为我已经这样配置了。我现在更新了我的问题,做了一些更改,你能不能像这样添加
SupportsCredentials
。。实际上,我在.NET 4.6中实现了相同的功能,而不是Core。我的库中没有Microsoft.AspNet,只有AspNetCore。另外,我认为AllowCredentials()和SupportCredentials是相同的,只是.NET版本不同。可能问题是服务器和客户端都在VPN下。嗯。。可能是。。希望您能找到解决方案:)谢谢您的评论,但遗憾的是..不,这不是cors策略,因为我已经这样配置了它。我现在更新了我的问题,做了一些更改,你能不能像这样添加
SupportsCredentials
。。实际上,我在.NET 4.6中实现了相同的功能,而不是Core。我的库中没有Microsoft.AspNet,只有AspNetCore。另外,我认为AllowCredentials()和SupportCredentials是相同的,只是.NET版本不同。可能问题是服务器和客户端都在VPN下。嗯。。可能是。。希望您能找到解决方案:)
[EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*", SupportsCredentials = true)]