本文主要是介绍【踩坑及思考】浏览器存储 cookie 最大值超过 4kb,或 http 头 cookie 超过限制值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
- 本地生产环境:超过最大值
cookie token
不存储; - 客户生产环境:打开系统空白,且控制台报
http 400
错误;
出现了两种现象
现象一:浏览器对大于 4kb 的 cookie 值不存储
导致用户名密码登录,且提示成功后,又返回到登录页。
注意:也有 cookie 值被截取现象,但我目前没遇到,使用 Google Chrome v118。此处不说明;
原因
-
虽然登录成功,但
cookie
没有存储token
; -
跳转路由要先验证
token
是否存在,以此判断用户是否登录; -
无
token
就跳回登录页,以此反复进入死循环;
解决
- 服务接口生成
token
时,限制其长度;
现象二:http 头 cookie 超过限制值
导致打开系统,页面空白,且控制台报 http 400
错误;
原因
- 系统存在多个
cookie
值存时,会合并到http
请求头cookie
,并发送给服务器; - 此时服务器(如:
nginx
) 接收的请求cookie
超出最大限制,返回http 400
错误;
解决
- 注意每次
cookie
的值不要太大; - 限制
cookie
个数,或使用localStorage
;
参考
此篇第三章有详细说明:https://blog.csdn.net/linzhiqiang0316/article/details/129720285
Cookie 和 Storage 区别说明,参考此篇https://www.cnblogs.com/lianghong/p/8520490.html
这篇关于【踩坑及思考】浏览器存储 cookie 最大值超过 4kb,或 http 头 cookie 超过限制值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!