Cookie不允许多个键/值对
本文关键字:值对 不允许 Cookie | 更新日期: 2023-09-27 18:05:32
我有一个使用cookie保持用户登录的简单方案。当我完成时,我希望cookie包含两个名称值对。我以前使用过这个基本实现,我不明白为什么这次对我不起作用。
protected void SetAuthCookie(string EventCode, string id)
{
SHA1 sha = SHA1.Create();
byte[] data = sha.ComputeHash(Encoding.UTF8.GetBytes(id));
HttpCookie AuthCookie = new HttpCookie("MyCookie");
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
AuthCookie["eventcode"] = EventCode;
AuthCookie["id"] = sBuilder.ToString();
Response.Cookies.Add(AuthCookie);
}
这是我迄今为止发现的:如果我注释掉"AuthCookie["eventcode"] = eventcode;"然后在我的浏览器中,我看到MyCookie留下了值"id=foo"。
同样,如果我注释掉"AuthCookie["id"] = sBuilder.ToString();"我看到MyCookie的值"eventcode=foo"。
我想要的是MyCookie有一个值"eventcode=foo&id=bar"。如果我没有留下任何一行注释,然而,在我的浏览器中,我看到MyCookie没有'空值。到底发生了什么事?
在以前的实现中唯一的区别是我没有处理'id'参数-它已经是一个guid。我认为这是一个加密散列字符串的事实是一个转移注意力的问题,因为硬编码'foo'作为'id'或'eventcode'的cookie值会导致相同的结果。我可能错了
HttpCookie AuthCookie = new HttpCookie("MyCookie");
AuthCookie.Values["eventcode"] = EventCode;
AuthCookie.Values["id"] = sBuilder.ToString();
AuthCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
MSDN
我发现谷歌浏览器有一些奇怪的问题与本地主机/开发网站。这是真的吗?