如果你查看 System.Web.HttpRequest 类的源代码就会发现,ASP.NET 不支持以逗号为分隔符的 cookie。你必须使用分号才能处理 cookie。
但是,W3C 的 HTTP 状态管理机制文档( RFC2309 )中规定,分号和逗号都是有效的 cookie 键分隔符。只不过开发者通常都使用分号而已。
为了在 ASP.NET 中实现以逗号为分隔符的 cookie,你需要创建工具来模拟 ASP.NET,从而以逗号(而非分号)来解析 cookie。创建解析工具的步骤如下:
- 创建处理所有请求的 HttpModule 类
- 检查 cookie 头中的逗号
- 解析 cookie,并将其提取到集合中
Match.com 的软件工程师 Keyvan Nayyeri 在其解析工具中实现了上述步骤。据Keyvan 说,如果cookie 的值中包含逗号,该解析工具将无法工作,同时,开发者可以在 Fiddler 中测试该模块。
查看英文原文: http://www.infoq.com/news/2012/11/comma-delimited-cookies-aspnet
感谢侯伯薇对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论