如何使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设置名称的大小写,但是我仍在获取与先前名称关联的旧值。

aoyang110 回答:如何使Cookie提取区分大小写

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

您仍然可以通过一些解决方法来访问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 Case Insensitivity。简短的结论是使asp.net与旧版本向后兼容。

,

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

var request = HttpContext.Current.Request;
var cookie = request.Cookies.Cast<HttpCookie>().SingleOrDefault(cookie => cookie.Name == "case sensitive name");
本文链接:https://www.f2er.com/3137976.html

大家都在问