You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#和.NET 6处理Cookie值中的逗号问题

解决第三方Cookie含连续逗号时读取不完整的问题

当第三方Cookie值包含连续逗号(示例:110, IN, ABC, X, Y,,,,,),使用ASP.NET的_httpContextAccessor.HttpContext.Request.Cookies["key"]读取会丢失部分内容——这是因为ASP.NET默认将逗号视为多个Cookie的分隔符,而第三方Cookie未按规范对含逗号的值进行引号包裹,导致解析错误。

由于无法修改第三方Cookie的编码方式,最可靠的解决办法是直接读取原始请求头并手动解析目标Cookie值:

  1. 获取原始Cookie请求头内容:
var rawCookieHeader = _httpContextAccessor.HttpContext.Request.Headers["Cookie"].ToString();
  1. 手动解析目标Cookie的完整值:
    实现一个简单的解析方法,跳过默认的Cookie分割逻辑,直接提取对应键的完整值:
string GetRawCookieValue(string rawCookie, string targetKey)
{
    var cookieSegments = rawCookie.Split(';', StringSplitOptions.RemoveEmptyEntries);
    foreach (var segment in cookieSegments)
    {
        var trimmedSegment = segment.Trim();
        if (trimmedSegment.StartsWith($"{targetKey}=", StringComparison.OrdinalIgnoreCase))
        {
            // 截取等号后的所有内容,保留原始的逗号和空值部分
            return trimmedSegment.Substring(targetKey.Length + 1);
        }
    }
    return null;
}

// 调用示例
var fullCookieValue = GetRawCookieValue(rawCookieHeader, "key");

这种方式直接从原始HTTP头中提取数据,不会被默认解析逻辑干扰,能完整保留Cookie的所有原始内容,包括末尾的连续逗号。

内容的提问来源于stack exchange,提问作者Sombir Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:12:05