今天在写代码的时候,碰到一个COOKIE总是发送不了的情况。感觉很是奇怪,困扰了我一天了。最后一个一个COOKIE分析后,发现能正常发送的COOKIE的VERSION都是默认的0,而发送不了的COOKIE的VERSION是1.
看来浏览器自动处理了服务提交的COOKIE中的VERSION属性。即使服务返回了VERSION为1的COOKIE也要当成VERSION发送。修改成VERSION设置部分后,程序终于成功运行了。没有出现登陆失败的情况。也~~~~~~
下面是收集的一些资料:(有些资料还是搜索谷歌的比较好,百度故意做SEO的大多了,很多好的技术类的问题不一定搜索得到)
默认的 Cookie 版本为 Netscape。如果该值被显式设置为 1,则此 Cookie 必须符合 RFC 2109。请注意,如果 Cookie 是通过接收 Set-Cookie2 HTTP 响应标头来自动创建的,所符合的规范将被设置为 RFC 2965。
Cookie.Version 属性
http://msdn.microsoft.com/zh-cn/library/system.net.cookie.version(v=vs.80).aspx
Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。