Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 Mvc Api:设置cookie,然后302/303重定向将丢失cookie_Asp.net_Api_Cookies_Http Redirect - Fatal编程技术网

ASP.NET Mvc Api:设置cookie,然后302/303重定向将丢失cookie

ASP.NET Mvc Api:设置cookie,然后302/303重定向将丢失cookie,asp.net,api,cookies,http-redirect,Asp.net,Api,Cookies,Http Redirect,我有一个返回HttpResponseMessage的API操作。 API地址如下所示: API操作执行一些登录身份验证,并将用户重定向到注册页面或欢迎页面。代码如下: var response = new HttpResponseMessage(); var cookie = new CookieHeaderValue("token", "ThisIsTheTokenNeeded"); response.Headers.AddCookies(new CookieHeaderValue[] { c

我有一个返回HttpResponseMessage的API操作。 API地址如下所示:

API操作执行一些登录身份验证,并将用户重定向到注册页面或欢迎页面。代码如下:

var response = new HttpResponseMessage();
var cookie = new CookieHeaderValue("token", "ThisIsTheTokenNeeded");
response.Headers.AddCookies(new CookieHeaderValue[] { cookie });
response.StatusCode = HttpStatusCode.Found;
response.Headers.Location = new Uri("http://localhost/welcome.html");
return response;

在welcome.html中,我使用“document.write(document.cookie)”,无法看到名为“token”的cookie。一些关于它是如何丢失的。有人能告诉我如何完成这项工作吗?或者说,这种架构毕竟不正确?

我找到了答案。未设置范围。在我的原始代码中,缺少以下行

cookie.Path = "/";
因为重定向到另一个页面,即使在同一个域下,cookie在不同的页面上也是无效的。如果未设置路径,则cookie仅对原始请求目标有效


今天我了解到,在声称有人吃了cookie之前,我需要仔细检查cookie的域和路径属性。

我的cookie添加了
path
,但问题仍然没有解决

经过很长时间,我终于通过在
web.config
中删除会话状态配置解决了这个问题:


我可以在注释后添加
设置cookie
标题

我希望这对你有帮助,谢谢