苏飞论坛

标题: 关于IsUpdateCookie和Cookiet处理的一点意见 [打印本页]

作者: lkhjzw    时间: 2022-12-6 00:27
标题: 关于IsUpdateCookie和Cookiet处理的一点意见
我不知道管理员是否还一直在更新程序,我也是前不久才购买的,研究了一下。总觉得在Cookie的一些处理上不太合理。既然都买了,也在用着,我看论坛都没什么人了。也提点意见吧。1、IsUpdateCookie
这个功能,总觉得好鸡肋,直接把 String 的 Cookie 和 CookieCollection 相等了。在实际的运用过程中,至少在我实际运用的过程中,几乎从来没用过这种做法,除非该请求本身不带Cookie,这样操作无可厚非。但如果本身就有Cookie呢?
举例
[C#] 纯文本查看 复制代码
signinfo=4655aadasdfasdf3asfasdf
PHPSESSID=eedfefasdfadsfefasdfdas

这是请求时 String Cookie,当我请求后,Response的Header有一个 Set-Cookie 项,内容为
[C#] 纯文本查看 复制代码
PHPSESSID=abcdefghijklmn

,那么,IsUpdateCookie 的功能应该是把请求时带的 Cookie 的 【PHPSESSID】项修改为 Response.Headers["Set-Cookie"] 的对应的值,那么更新后 Cookie 的值就应该为
[C#] 纯文本查看 复制代码
signinfo=4655aadasdfasdf3asfasdf
PHPSESSID=abcdefghijklmn

这样我觉得才是应该的。

2、GetMergeCookie
这个就有点和我刚才说的那个差不多了。这里有一个去重,但去的是整个item,如果按照我的上一个例 ,那么同样会出现2个 PHPSESSID,这里是不是去重也要判断一下?或者定义一下Cookie的Name?如果相同,则保留 Cookie2 的对应的值?

[C#] 纯文本查看 复制代码
internal static string GetMergeCookie(string cookie1, string cookie2)
        {
            if (string.IsNullOrWhiteSpace(cookie1))//新的是空的
            {
                return cookie2;//返回老的
            }
            if (string.IsNullOrWhiteSpace(cookie2))//老的是空的
            {
                return cookie1;//返回新的
            }
            List<string> cookielist = new List<string>();//结果
            string[] list_1 = cookie1.ToString().Split(';');
            string[] list_2 = cookie2.ToString().Split(';');
            foreach (string item in list_1)
            {
                //排除重复项
                if (cookielist.Contains(item)) continue;
                //对接Cookie基本的Key和Value串
                cookielist.Add(string.Format("{0} ", item.Trim()));
            }
            foreach (string item in list_2)
            {
                //排除重复项
                if (cookielist.Contains(item)) continue;
                //对接Cookie基本的Key和Value串
                cookielist.Add(string.Format("{0}", item));
            }
            return string.Join(";", cookielist);
        }


当然,以上两个问题,要自己来解决都很简单,没有难度,处理一下就好了。但总归这整套一直在更新,自己写的这些方法,等下一次更新,又要自己来改一次,难免有点麻烦,所以想请管理员瞅瞅,看下次更新的时候,可否把上述问题看如何解决一下?如果说得不好或不对的地方,还请见谅。

作者: 站长苏飞    时间: 2022-12-15 10:20
第一个的意思就是更新为新的Cookie,这个不是合并两个Cookie,应用场景还是很多的,如果是合并要吧自己来维护,这里我建议还是先保持

第二个问题确实会存在你说的问题,这个稍后的更新,我会处理一下。会以Key值做为判断保留第二个list的值,
作者: pdang9980    时间: 2023-5-15 14:03
遇到重复 且需要更新 我也是自己处理的 这个应该完善下




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4