API 使用 JWT 身份验证调用 returns 401

API calls with JWT authentication returns 401

我有一个使用 JWT 身份验证的 .NET 6 Web API 应用程序。前端是一个 angular 应用程序。当我使用 header 中的不记名令牌进行 API 调用时,它 returns 401 错误代码。但是使用相同的不记名令牌,我可以从 Swagger 调用相同的 API 并取回预期的数据。

我正在使用 HttpClient 进行 API 调用:

import { HttpClient, HttpHeaders } from '@angular/common/http';
...
     
constructor(private httpClient: HttpClient
            private router: Router) { }
     
... 
const tokenHeader = new HttpHeaders({ "Authorization": `Bearer ${token}` }); 
const options = { headers: tokenHeader };  
return this.httpClient.post<any>(url, postParams, options);

控制台出错

要求:

预检请求:

需要在后台激活cors,授权前台使用api

https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-6.0

401 用于未经授权的请求。由于 CORS 策略,浏览器在发出实际请求之前会进行 OPTIONS 调用,但浏览器不会在此类调用上发送授权 header。如您所见,OPTIONS 请求不包含令牌,因此您需要确保您的服务器不会以 401 响应 OPTIONS 请求。

这对我有用...

app.UseCors() 移到这些之前:

app.UseHttpsRedirection()
app.UseDefaultFiles()
app.UseStaticFiles()
app.UseCookiePolicy()