6.3K Star 12K Fork 4.1K

GVPdotNET China / Furion

 / 详情

远程请求获取cookie时,如果cookie的值含有等号会导致被截断

已完成
创建于  
2023-11-08 15:35

版本号

4.8.8.53 (最新)

.NET SDK

.NET6

项目类型

WebApi

操作系统

Windows 11

运行环境

开发环境 (Development)

数据库类型

MySql 8+

应用托管程序

Nginx

这个问题是否已经存在?

如何复现

框架源码中,直接对cookie用等号分割,然后值部分只取了索引1,这样如果值中有等于号就会被截断

    /// <summary>
    /// 获取 Cookies
    /// </summary>
    /// <param name="httpResponse"></param>
    public static Dictionary<string, string> GetCookies(this HttpResponseMessage httpResponse)
    {
        // 读取响应报文中的 Set-Cookie 数据
        var setCookies = httpResponse.GetSetCookies();

        // 支持重复 Key
        var cookies = new Dictionary<string, string>(new RepeatKeyEqualityComparer());

        // 遍历所有 Set-Cookie 键
        foreach (var setCookie in setCookies)
        {
            // 根据 ; 切割
            var cookieParts = setCookie.Split(';', StringSplitOptions.RemoveEmptyEntries);
            if (cookieParts.Length > 0)
            {
                // 根据 = 切割
                var cookiePart = cookieParts[0].Split('=');
                var cookieKey = cookiePart[0];
                var cookieValue = Uri.UnescapeDataString(cookiePart[1]);

                cookies.Add(cookieKey, cookieValue);
            }
        }

        return cookies;
    }

输入图片说明

然后还有一个问题就是 值 会多一对引号,如图。

预期结果

正确返回cookie值

实际结果

值被截断,多了引号

异常信息

截图或视频

如上图

Demo 地址(Git/网盘/SVN)

友好承诺

  • 我承诺将本着相互尊重、理解和友善的态度进行交流,共同维护好 Furion 来之不易的良好的社区氛围。

评论 (5)

skywolf627 创建了任务

确实存在这样的问题。

能否提供一个响应头我一下,下次还是建议给我一个demo,虽然定位了问题,但是还差测试数据,我得花时间去模拟。

已修复:b1fa7ae

下个版本(今天,一个小时内)发布。

谢谢大佬~

百小僧 任务状态待办的 修改为已完成

Furion v4.8.8.54 版本已发布,已修复。

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
974299 monksoul 1578937227 528295 skywolf627 1600940545
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助

53164aa7 5694891 3bd8fe86 5694891