繁体   English   中英

如何使cookie提取区分大小写

[英]How to make cookie extraction case sensitive

假设客户端有 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 设置名称的大小写,但我仍然得到与以前名称关联的旧值。

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

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

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

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

索引器方法不区分大小写,但您仍然可以遍历 cookies 并自己检查名称,例如使用 LINQ:

var request = HttpContext.Current.Request;
var cookie = request.Cookies.Cast<HttpCookie>().SingleOrDefault(cookie => cookie.Name == "case sensitive name");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM