C# 使用AntiforgeryToken从ASPNET.CORE获取400状态
我有一个带.net核心Api的angular 4应用程序。我想做一些端点的防伪验证。通过这种方式,我成功地在浏览器cookies中获得了一个令牌 这是startup.cs-配置:C# 使用AntiforgeryToken从ASPNET.CORE获取400状态,c#,asp.net-core,C#,Asp.net Core,我有一个带.net核心Api的angular 4应用程序。我想做一些端点的防伪验证。通过这种方式,我成功地在浏览器cookies中获得了一个令牌 这是startup.cs-配置: if (env.IsDevelopment()) { } app.UseDeveloperExceptionPage(); app.UseCors("AllowAll"); app.Use(next => context => { string method = context.Request.
if (env.IsDevelopment())
{
}
app.UseDeveloperExceptionPage();
app.UseCors("AllowAll");
app.Use(next => context =>
{
string method = context.Request.Method;
if (method == "GET")
{
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions()
{
HttpOnly = false,
});
}
return next(context);
});
这来自ConfigureServices:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme =
JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme =
JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
o.Authority = Configuration["IdentityServer"];
o.Audience = "MyApi";
o.RequireHttpsMetadata = false;
});
services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
}));
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
options.RequireSsl = false;
options.SuppressXFrameOptionsHeader = false;
});
这在控制器中:
[Authorize]
[ValidateAntiForgeryToken]
[HttpPost, Route("irrelevant")]
public IActionResult CalledByTheFront([FromBody] irrelevant)
{
return Ok("irrelevant");
}
我在浏览器中找到的cookies
以及请求:
我做错了什么?
另外,你知道为什么浏览器中的Cookie只有在API重新启动时才会更新,尽管每个GET请求的头中都有一个Cookie吗