rdh*_*aut 2 cors asp.net-core axios asp.net-core-webapi
我在客户端和 Asp.net Core Web Api 服务器端有一个应用程序(在 Vuejs 中)+ axios。我添加了一个 jwt 令牌身份验证。我已将服务器配置为在令牌过期时添加自定义标头。(我在响应中有“Token-Expired”标头)。
来自 axios 拦截器的 error.response.headers 对象中不存在标头“token-expired”......(注意:这是令人沮丧的,因为标头存在于 Postman 上但不存在于 axios 中)。
编辑:github 上的这个问题似乎与我的情况类似https://github.com/axios/axios/issues/606
默认情况下,浏览器不会向应用公开所有响应标头。有关更多信息,请参阅W3C 跨域资源共享(术语):简单响应头。
默认情况下可用的响应头是:
来源:https : //docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2#set-the-exposed-response-headers
更多一般信息:https : //docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2
要使应用程序可以使用其他标头,请在启动时调用 Configure 中的 WithExposedHeaders 方法。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
app.UseCors(builder =>
{
builder.WithOrigins("http://localhost:8080");
builder.AllowAnyHeader();
builder.WithExposedHeaders("Token-Expired");
builder.AllowAnyMethod();
builder.AllowCredentials();
builder.Build();
});
}
Run Code Online (Sandbox Code Playgroud)
注意:您必须设置特定的原点(而不是添加 AllowAnyOrigin() 方法)。事实上,CORS 规范还指出,如果存在 Access-Control-Allow-Credentials 标头,则将来源设置为“*”(所有来源)是无效的。
等等 :)
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |