比如,下面三个列子,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却不会。 */