Asp.net core 使用IISExpress和localhost时未更新XSRF-TOKEN
.Net核心api层和带有Angular2前端的.Net核心MVC。在本地,它们运行在不同的网站(localhost:xxx1和localhost:xxx2)上并发布,api运行在前端的子目录中 我设置了.Net Core Antiforgery,如下所示: 在ConfigureServices部分中:Asp.net core 使用IISExpress和localhost时未更新XSRF-TOKEN,asp.net-core,antiforgerytoken,Asp.net Core,Antiforgerytoken,.Net核心api层和带有Angular2前端的.Net核心MVC。在本地,它们运行在不同的网站(localhost:xxx1和localhost:xxx2)上并发布,api运行在前端的子目录中 我设置了.Net Core Antiforgery,如下所示: 在ConfigureServices部分中: services.AddAntiforgery(options => { options.HeaderName = "X-XSRF-TOKEN";
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
});
在“配置”部分中:
app.Use(next => context =>
{
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, new CookieOptions() { HttpOnly = false });
return next(context);
});
当我最初启动网站并在Chrome中浏览网站时,我确实获得了2个Antiforgery令牌(.AspNetCore.Antiforgery.xxxx和XSRF-TOKEN),当我进行get/post/etc调用时,我看到x-XSRF-TOKEN头添加到调用中
问题在于每次调用时,api都会返回一个新的XSRF-TOKEN cookie,但本地my cookie没有更新,它始终包含原始值。当在线发布时,这种情况不会发生,cookie每次都会更新
我尝试在本地设置站点以使用localhost.somedomain.com,但没有成功
关于我做错了什么或者如何让它在本地工作,有什么建议吗?我本地机器上的问题是,我在自己的IIS Express中运行每个应用程序(localhost:xxx1和localhost:xxx2)。
在本文()之后,我将IIS设置为宿主.NETCore,并得到了预期的结果 你能不能在你的问题中加入你在哪个项目中加入了防伪。我觉得您已经将它添加到了web项目中,而实际上它应该在API项目中。我还应该注意,cookie不需要更新,它可以用于多个调用。防伪代码在web api中。我用下面的答案算出了