.Net Core api层和.Net Core MVC w / Angular2前端。在本地,它们运行在不同的网站(localhost:xxx1和localhost:xxx2)并发布,api运行在前端的子目录中。
我已经设置了.Net Core Antiforgery:
在ConfigureServices部分中:
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但在本地我的cookie没有更新,它总是包含原始值。在线发布时,不会发生这种情况,cookie每次都会更新。
我已尝试在本地设置网站以使用localhost.somedomain.com,但这不起作用。
关于我做错了什么或如何让它在本地工作的任何建议?
答案 0 :(得分:0)
我本地计算机上的问题是我在自己的IIS Express中运行每个应用程序(localhost:xxx1和localhost:xxx2)。 在本文(https://docs.microsoft.com/en-us/aspnet/core/publishing/iis)之后,我最终将IIS设置为托管.net核心,并且我得到了预期的结果。