当前位置: 代码网 > it编程>游戏开发>ar > HTTP:400 Request Header Or Cookie Too Large

HTTP:400 Request Header Or Cookie Too Large

2024年08月06日 ar 我要评论
根据cookie的相关知识,我们可以访问同一域名下的随便一个可访问的页面,然后通过浏览器控制台运行一个循环对document.cookie进行反复赋值(key值不同的cookie),最后刷新页面就可以看到。由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。只能对一个cookie进行设置(新增)或更新,它与我们对变量的重新赋值虽然在形式上是一样,但实质结果是不一样的。第二步:消除客户端影响。第一步:修正代码错误,正确删除cookie。

一、问题描述

有时候在访问页面时会遇到400 bad request(request header or cookie too large)错误,如下图所示:
在这里插入图片描述

二、可能性分析

先了解一下关于400 bad request状态码的解释:

由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。

结合request header or cookie too large,可以知道可能是:

由request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起的。(如果不清楚cookie是什么,点击查看 cookie的相关知识

三、代码走查

搜索document.cookie,可以看到如下代码:
在这里插入图片描述

重点看上述代码第52行,document.cookie = …

这段代码会被反复运行,并且可能会有不同的 companyid|token的key值出现。这就有可能导致多次运行后cookie太大。

四、问题重现与验证

如何简单的重现问题呢?根据cookie的相关知识,我们可以访问同一域名下的随便一个可访问的页面,然后通过浏览器控制台运行一个循环对document.cookie进行反复赋值(key值不同的cookie),最后刷新页面就可以看到。

for(var i = 0; i<40; i++) {
    document.cookie = "ij7i"+i+"|token=eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyjpc3mioijodhrwczovl2twyxbplwnzlmnraniwmdeuy29tl2fwas9wyy9sb2dpbi9oyxnrcmnvzgvmb2dpbmvkiiwiawf0ijoxnjuynjy1nzeylcjlehaioje2ntuyntc3mtisim5izii6mty1mjy2ntcxmiwianrpijoiauxby2m1tmzrte0weenfeiisinn1yii6bnvsbcwiyyi6imxqn2wilcj1ijoiohhnnzhqbjkifq.q45s4lwtas5z1zo94ugt0qrvznb0hijvvt7m2ghjtyq"+"i"
}

最终结果:
在这里插入图片描述

为什么会这样呢?我们来了解一下documet.cookie。

先思考:可否直接使用document.cookie=''来清空cookie?
答案是不可以。原因就是,document.cookie = newcookie 只能对一个cookie进行设置(新增)或更新,它与我们对变量的重新赋值虽然在形式上是一样,但实质结果是不一样的。

解决方案

第一步:修正代码错误,正确删除cookie。

第二步:消除客户端影响。对于已造成影响的客户端,要区分情况处理:

①如果客户端能清理cookie缓存,则进行清理。如果没有工具进行清理或者不便已清理的,则可以提供修复功能或者可以进行修复的页面。

②修改nginx服务器配置文件nginx.conf,增大请求缓冲,根据需要调整 client_header_buffer_sizelarge_client_header_buffers

client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com