使用IISExpress和localhost时,XSRF-TOKEN未更新

时间:2017-07-16 03:48:47

标签: asp.net-core antiforgerytoken

.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,但这不起作用。

关于我做错了什么或如何让它在本地工作的任何建议?

1 个答案:

答案 0 :(得分:0)

我本地计算机上的问题是我在自己的IIS Express中运行每个应用程序(localhost:xxx1和localhost:xxx2)。 在本文(https://docs.microsoft.com/en-us/aspnet/core/publishing/iis)之后,我最终将IIS设置为托管.net核心,并且我得到了预期的结果。