在 ASP.NET 中的 Response.Redirect 中传递 cookie

2024-01-04

我在将 ASP.NET 中的 cookie 传递到新 URL 时遇到问题。我将 cookie 添加到响应中,如下所示:

Response.Cookies.Add(new HttpCookie("Username", Username.Text));

然后我发出重定向:

Response.Redirect(returnURL);

在我重定向到的新页面上,cookie 集合为空。我尝试像这样检索 cookie:

Request.Cookies["Username"].Value;

有人能想到为什么 cookie 没有被传递吗?

EDIT:

我忘记添加更多信息 - 在同一浏览器会话中第二次尝试时,cookie 通过重定向正确传递。

编辑#2:我发现如果我在重定向 URL 中使用“localhost”而不是实际域名,那么 cookie 将在首次登录时正确传递。因此,只有当重定向 URL 是实际域名时,它才不起作用。奇怪的。


根据HTTP状态管理机制 http://www.ietf.org/rfc/rfc6265.txt

源服务器可以发送带有任何内容的 Set-Cookie 响应标头
回复。用户代理可以忽略包含在
具有 100 级状态代码的响应,但必须处理 Set-Cookie
其他响应中包含的标头(包括带有 400-
和 500 级状态代码)。一个源服务器可以包含多个
单个响应中的 Set-Cookie 标头字段。存在一个
Cookie 或 Set-Cookie 标头字段不排除 HTTP 缓存
避免存储和重用响应。

因此,重定向 (3xx) 位于“其他”响应中,因此它们应该由浏览器处理,然后浏览器可能会因各种原因删除它们。浏览器拒绝 cookie 的原因之一是指定 cookie 的域属性但没有足够的点(如“localhost”),或者 cookie 的路径属性与 URL 中的实际路径大小写不匹配(cookie 的路径区分大小写)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET 中的 Response.Redirect 中传递 cookie 的相关文章

随机推荐