似乎 cookie 实际上是区分大小写的。对此有些困惑。有趣的是,MSDN 另有说明:
Cookie 名称不区分大小写
来源: http: //msdn.microsoft.com/en-us/library/ms970178.aspx文章底部©2002
说它可能已经过时了。
此外,asp.net 论坛中也有人问过这个问题:http ://forums.asp.net/t/1170326.aspx?Are+cookie+names +case+sensitive+ 似乎答案是区分大小写的.
这是怎么回事?MSDN 说不,其他技术说是。可以肯定的是,我使用 ASP Classic 对此进行了测试。
代码
hashUCASE = Request.Cookies("data")("Hash")
hashLCASE = Request.Cookies("data")("hash")
Response.Write "<p> hashUCASE = " & hashUCASE
Response.Write "<br> hashLCASE = " & hashLCASE
cookieNameUCASE = Request.Cookies("Data")
cookieNameLCASE = Request.Cookies("data")
Response.Write "<p> cookieNameUCASE = " & cookieNameUCASE
Response.Write "<br> cookieNameLCASE = " & cookieNameLCASE
Response.End
结果
hashUCASE: EE3305C0DAADAAAA221BD5ACF6996AAA
hashLCASE: EE3305C0DAADAAAA221BD5ACF6996AAA
cookieNameUCASE: name=1&Hash=EE3305C0DAADAAAA221BD5ACF6996AAA
cookieNameLCASE: name=1&Hash=EE3305C0DAADAAAA221BD5ACF6996AAA
正如您在结果中看到的那样,值“Hash”是用大写字母创建的,即使您使用小写字母发出请求,它也会返回相同的值,这使得它不区分大小写。在这种 MS 技术下,它不是。
结论
因此,在 ASP 经典中使用 Request.Cookies(),它不区分大小写,就像微软所说的那样。但是等等,它不是又区分大小写了吗?这可能意味着是否敏感取决于向浏览器发出请求的服务器端技术,这可能会规范化 cookie 名称以发出请求,从而使其不区分大小写。但这是我们必须测试以验证的其他内容。
我的建议是使用您使用的任何技术进行测试,并在您的代码库中建立标准,与您的团队达成协议。即,如果您要使用 cookie,请决定在您要在代码中使用它的任何时候,它是否总是以小写或大写形式编写。这样就不会有任何区分大小写的问题,因为在您的代码中,它将始终以相同的大小写声明。
tl;博士
只要您保持 cookie 名称的约定,您就不会有区分大小写的问题。