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值会导致相同的结果。我可能错了

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

我发现谷歌浏览器有一些奇怪的问题与本地主机/开发网站。这是真的吗?