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

ASP.NET C#中Cookie存储含&的密码丢失末尾字符的原因与解决方法

Cookie值末尾&丢失的问题分析与解决

原因分析

HTTP Cookie的内容遵循URL编码规范,&是URL中键值对的分隔符。当你直接将包含&的字符串赋值给Cookie.Value时,ASP.NET在输出Cookie时,未编码的&会被解析为参数分隔标记,导致&之后的内容被截断。比如Sl98&&会被识别为Sl98&加一个空参数,最终存储的有效内容只剩Sl98&。

修复方案

需要对Cookie的Value进行URL编码,确保特殊字符(包括&)被转义为安全的编码格式,读取时再解码还原原始内容。

设置Cookie时编码

HttpCookie passCookie = new HttpCookie("passC");
// 对Session中的密码值进行URL编码
passCookie.Value = HttpUtility.UrlEncode(Session["pass"].ToString());
passCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(passCookie);

读取Cookie时解码

if (Request.Cookies["passC"] != null)
{
    // 解码还原原始字符串
    string originalPass = HttpUtility.UrlDecode(Request.Cookies["passC"].Value);
    // 后续业务逻辑处理
}

URL编码会将&转换为%26,这样Cookie在传输和存储过程中不会被错误解析,读取时解码就能完整还原包含&的原始密码。

内容的提问来源于stack exchange,提问作者Mike Radunski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:15