浏览器中cookie存储的编码方案
Encoding scheme for cookie storage in browsers
根据ECMA-262第5版:
本国际标准的一致实施应解释符合Unicode标准版本的字符3.0或更高版本和ISO/IEC 1064 6-1,UCS-2或UTF-16作为采用的编码形式,实现级别3。如果采用ISO/IEC10646-1子集没有另行指定,它被认为是BMP子集,集合300。如果采用的编码形式不是除非另有说明,否则假定为UTF-16编码形式。
这就引出了以下问题:
- ECMAScript标准推荐的UTF-16或UCS-2指用于存储目的的编码形式,或计算目的
- 什么字符编码(用于存储目的)用于在客户端上存储cookie
- 此外,由于HTTP标头值不允许非US-ASCII字符,浏览器在向服务器发送cookie之前是否将字符编码更改为ASCII
我对用于存储cookie的字符编码浏览器特别感兴趣,因为这可以让我计算每个cookie可以使用的实际字节数。
1.ECMAScript标准推荐的UTF-16或UCS-2是指用于存储或计算目的的编码形式?
与ECMAScript一样,计算只指定呈现给脚本的接口,而不是如何在幕后实现。一个实现可以使用任何形式的字符串存储(例如,它可以优化仅ASCII的字符串,使每个ECMAScript char/UTF-16代码单元只占用一个字节)。
2.什么字符编码(用于存储目的)用于在客户端上存储cookie?
ECMAScript或任何其他web标准未指定。IE将cookie文件存储在特定于区域设置的默认代码页(又称ANSI)中。其他一些浏览器使用SQLite数据库,通常使用UTF-8。
3.此外,由于HTTP标头值不允许非US-ASCII字符,浏览器在向服务器发送cookie之前是否将字符编码更改为ASCII?
因浏览器而异。上次我检查:IE编码为ANSI。Chrome使用UTF-8。Firefox使用每个UTF-16代码单元的低字节(对于支持的字符,与ISO-8859-1兼容,否则将被不可挽回地损坏)。Safari完全阻止非ASCII。
问题:实际上,非ASCII字符在cookie中根本不可用。如果您需要Unicode安全性和/或更大的容量,请使用DOM存储。
我对用于存储cookie的字符编码浏览器特别感兴趣,因为这可以让我计算每个cookie可以使用的实际字节数。
浏览器限制在任何情况下都有很大差异。
- 以HTML文件中的编码形式脱机存储图像
- 节点证书存储,节点仅从硬编码的证书列表中读取
- 在IE8中使用本地存储的替代方案
- 当点击一个标记时,地理编码器返回先前存储的值
- 是否有跨子域工作的现代会话存储替代方案
- 递归函数 - 计数如何存储在此阶乘解决方案中
- 在 JavaScript 中将小数字合并为一个是个好主意吗?(作为存储优化解决方案)
- 用于存储 Javascript 应用程序的持久本地数据的轻量级解决方案
- jsFiddle用于存储大量脚本集合的替代方案
- 永久存储的Cookie替代方案
- 使用谷歌地图进行地理编码,没有OVER_QUERY_LMIT错误-尝试使用PHP解决方案
- 将google地理编码返回的值存储在外部javascript变量中
- 类似localStorage的HTA存储替代方案
- 上传的图像应存储在数据库中的位(编码)
- 浏览器中cookie存储的编码方案
- 将存储中的特定字段编码为JSON
- 编码器验证库在会话中存储错误
- 对文件系统存储中的文件名进行编码
- 什么是JSON存储键值对的替代方案,并且可以使用Jquery轻松解析
- 避免post方法的硬编码解决方案