Я пытаюсь настроить свой пользовательский интерфейс и API на отдельных хостах (например, www.example.com и api.example.com) вместе с защитой CSRF.
Я следовал документации MSFT (https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-2.2#configure-antiforgery-features-with-iantiforgery) и после Angular
ConfigureServices
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
});
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.WithOrigins("https://www.example.com")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
}));
Configure
app.UseCors("CorsPolicy");
app.Use(next => context =>
{
if (context.Request.Path.Value.IndexOf("/api", StringComparison.OrdinalIgnoreCase) != -1)
{
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions()
{
HttpOnly = false
});
}
context.Response.Headers.Remove("Server");
return next(context);
});