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()
我有一个使用 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()