在Cookie中使用Base64存储二进制的问题
项目中需要将压缩后的二进制数据存入cookie的value中。如果直接将二进制数据存入是不行的,因为cookie规范中规定了一些字符不允许存入:
引用
对于二进制数据,无法(也不应该)控制数据内容。所以在写入和读出cookie数据前后,应该先经过编解码过程,将二进制数据编码存储。
比较通用的做法是进行BASE64编码,但是当原始数据长度不能被3整除时,BASE64会在结尾处补1~2个等号,而等号在cookie规范中是不允许出现的,这里是问题说明:
http://stackoverflow.com/questions/2090009/what-text-encoding-scheme-do-you-use-when-you-have-binary-data-that-you-need-to/2090066#2090066
所以可以选用某种BASE64的变种,它将BASE64中定义的'+','/','='转换为其它不会造成分隔符污染的字符:
http://en.wikipedia.org/wiki/Base64#URL_applications
这里我使用对于URL友好的一种BASE64编码UrlBase64Encoder,以下是这个包的maven依赖声明:
?