后请求Windows身份验证+ Core 2.2 WebAPI上未经授权的401

时间:2019-09-11 12:45:26

标签: javascript angular

我正在将.CORE 2.2与WebAPI一起使用。 该解决方案托管在IIS10 Windows Server 2016上,并且Windows身份验证应该是我的服务的唯一身份验证方法。 在Angular 7中,当我使用带有设置为true的选项的GET请求时。一切都按预期进行。无论如何,此Post请求均不起作用,响应为Unauthorized 401。 仅供参考,APi和服务器API位于不同的服务器上。

Photon Rigid Body View

这不是Cors政策,因为正确配置了Cors

isKinematic

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

关于如何解决此问题的任何线索吗?

1 个答案:

答案 0 :(得分:0)

  • 在您的后端中,将 AllowCredentials SupportsCredentials 属性设置为true
  • 在您的后端中,请勿将通配符(*)放入允许来源。专门添加您的前端URL

类似这样

.NET Core

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

 services.AddCors();

     var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();

     policy.Headers.Add("*");    
     policy.Methods.Add("*");          
     policy.Origins.Add("*");
     policy.SupportsCredentials = true;

     services.ConfigureCors(x=>x.AddPolicy("mypolicy", policy));

.NET 4.6

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