在Angular 9+Asp.net Core Web API中启用Windows身份验证后,Preflight(Opt



我们有asp.net核心web api和angular 9应用程序。Asp.net核心web API使用以下代码启用了windows身份验证。此外,为了测试,我正在为所有人启用CORS。

"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:44305",
"sslPort": 0
}
},

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

app.UseCors("CustomCorsPolicy");

当我发出GET请求时,我得到了响应,但当发出POST请求时,它失败了。我已经把克伦特的观点设定为真。下面是我设置的拦截器

intercept(httpreq: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
httpreq= httpreq.clone({
withCredentials: true
});
return next.handle(httpreq);
}

此外,在类似的应用程序模块上注册拦截器

{ 
provide: HTTP_INTERCEPTORS, 
useClass: WdAuthHttpInterceptor, 
multi: true 
},

访问位于"的XMLHttpRequesthttps://localhost:44305/anotherdata/test'来自原点'http://localhost:4200'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在"access control Allow Origin"标头。

我使用的是.NET Core 3.1;API";项目外观。这就是我让CORS运行Startup.cs所需要的全部内容。**需要重新启动IIS express服务器来获取更改。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseCors(builder =>
builder.WithOrigins("http://localhost:21460").AllowCredentials());
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}

最新更新