首页 > 解决方案 > 如何使cookie提取区分大小写

问题描述

假设客户端有 2 个 cookie 条目:

cookieExample1 = 1
cookieExaMPLE1 = 2

在后端,我使用以下代码:

var value1 = HttpContext.Current.Request.Cookies["cookieExample1"].Value;
logger.Info(value1); //result: 1
var value2 = HttpContext.Current.Request.Cookies["cookieExaMPLE1"].Value;
logger.Info(value2); //result: 1

我的问题是:如何使 cookie 值提取区分大小写?我已经修改了现有应用程序中 cookie 设置名称的大小写,但我仍然得到与以前名称关联的旧值。

标签: c#asp.netasp.net-mvc

解决方案


通过使用HttpContext.Current.Request.Cookies["cookieExaMPLE1"].Value,您将始终获得具有此不区分大小写名称的第一个 cookie 的值。Cookie 本身区分大小写。

您仍然可以通过一些解决方法访问 cookie:

for (int index = 0; index < cookies.Count; index++)
{
    writer.Write("<li>{0:D}> <b>", index);
    HttpUtility.HtmlEncode(cookies.GetKey(index), writer);
    writer.Write("</b> = &quot;");
    HttpUtility.HtmlEncode(cookies[index].Value, writer);
    writer.Write("&quot;</li>");
}
// -> cookieExample1=1 cookieExaMPLE1=2

要了解为什么 cookie 或一般会话参数不区分大小写,请参阅.NET HttpSessionState 不区分大小写。简短的结论是保持 asp.net 与旧版本向后兼容。


推荐阅读