Cookie的作用域不区分协议和端口

原创 野人  2021-07-26 09:01  阅读 72 次

比如,下面三个列子,Cookie都是可以访问的到的

1. http://www.test123.com/

2. https://www.test123.com/

3. https://www.test123.com:25934/

一、先说结论

Cookie的作用域仅仅由【**domain**】和【**path**】决定,与协议和端口无关。

二、一些特点

1、单条存值不大(最大可以存4kb=4096字节,但是实际上测试谷歌版本 89.0.4389.90,超过4095个字节就不行了)

2、每个域名下最多存储50条数据(不同浏览器会有不同,但是实际上测试谷歌版本 89.0.4389.90,添加了1000条,进去了163条,这里大家要注意了,就是在开发者工具中可能看不到那么多条,但是实际上通过js中的document.cookie是可以看到那么多条的,且这么多条cookie请求的时候会带上的,在测试之前已经把自带的cookie全部清空,然后通过fetch访问相同的网址)

关于上面的几点,都是网上搜索到的,然后经过测试过得出的结果,所以小编也是纳闷,不理解,如果有知道的可以说下。

三、注意事项

如果设置的cookie含有中文/特殊字符的话,最好是转译后进行存储,主要中文/特殊字符的cookie后端收到的是乱码的。

四、前端中中文/特殊字符编码转换的几个API

代码格式说明:编码/解码 //注释

escape/unescape //escape是对字符串(string)进行编码,编码之后的效果是%XX或者%uXXXX这种形式,其中 ASCII字母 数字 @*/+ 这几个字符不会被编码,其余的都会。(官网上已经废弃了这个API,但是现代浏览器中还是有,什么时候删除未知,所以大家最好不要用)

encodeURI/decodeURI //不会对下列字符编码 **ASCII字母 数字 ~!@#$&*()=:/,;?+'**

encodeURIComponent/decodeURIComponent //不会对下列字符编码 ASCII字母 数字 ~!*()'

/**
小结论:
所以encodeURIComponent比encodeURI编码的范围更大。
但是URl的话,最好是用encodeURI,因为encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。
*/

参考资料:

escape,encodeURI,encodeURIComponent有什么区别?

本文地址:http://www.yerenwz.com/4412.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论