Cookie与特殊字符

7 sec read

这个是一个发生在自己身边的故事,由于Cookie值中设置了一个特殊字符,导致部分手机由于兼容性问题在打开站点时产生5xx错误,经分析Cookie中的字符并不被部分Android手机机型支持。

为什么会出现这样的情况?我们先来看下关于使用Cookie的一些注意事项:

1. Cookie的兼容性问题

Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。

2. Cookie的内容

同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。

RFC2109 制定的规范:

rfc2109

RFC 2068 制定的规范:

rfc2068

最后的忠告,Cookie中永远不要存特殊字符,即使要存储也要进行编码以后再存。

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

北大开源分词工具pkuseg

pkuseg简介 pkuseg是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。pkus
1 min read

使用Python进行中文繁简转换

中文繁体、简体的差异,在NPL中类似英文中的大小写,但又比大小写更为复杂,比如同样为繁体字,大陆、香港和台湾又
1 min read

Python因子分解库:fastFM

FastFM简介 FastFM的主要特点是将是将因子分解封装成scikit-learn API接口,核心代码使
2 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注