Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用IISExpress和localhost时未更新XSRF-TOKEN_Asp.net Core_Antiforgerytoken - Fatal编程技术网

Asp.net core 使用IISExpress和localhost时未更新XSRF-TOKEN

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";

.Net核心api层和带有Angular2前端的.Net核心MVC。在本地,它们运行在不同的网站(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,但本地my cookie没有更新,它始终包含原始值。当在线发布时,这种情况不会发生,cookie每次都会更新

我尝试在本地设置站点以使用localhost.somedomain.com,但没有成功


关于我做错了什么或者如何让它在本地工作,有什么建议吗?

我本地机器上的问题是,我在自己的IIS Express中运行每个应用程序(localhost:xxx1和localhost:xxx2)。
在本文()之后,我将IIS设置为宿主.NETCore,并得到了预期的结果

你能不能在你的问题中加入你在哪个项目中加入了防伪。我觉得您已经将它添加到了web项目中,而实际上它应该在API项目中。我还应该注意,cookie不需要更新,它可以用于多个调用。防伪代码在web api中。我用下面的答案算出了