网页出现400错误Bad Request Request Header Or Cookie Too Large错误的解决方法

查看付费资源请通过右侧购买区域进行购买!

在开发项目过程中,突然遇到400 Bad Request Request Header Or Cookie Too Large的报错,我也是第一次出现这样的错误,感觉还是挺新奇的。

网页出现400错误Bad Request Header Or Cookie Too Large错误的解决方法 400错误解决方法 第1张

分析下出现错误的原因:

1、可能是你的网络DNS配置错误。

2、由request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起的。

3、访问太频繁,浏览器的缓存量太大,产生错误。

解决办法:

1、清理浏览器的cookie记录,和缓存文件,重启浏览器就好了。

2、打开360安全卫士,选择系统修复,选定电脑门诊,修复即可;或者选择电脑清理,清理下系统中的垃圾文件。

3、你可以右击网上邻居-属性-找到你的本地连接-右击属性-常规选项卡里有个下拉此连接使用项目,选择INTERNETF协义(TCP/IP)下面点击属性选自动获得,最好查一下当地的DNS填进去,如果是局域网你可以在主DNS上填写你的网关地址,如192.168.1.1或192.168.0.1。

4、采用nginx服务器的话修改方法:

/usr/local/nginx/conf

在这个路径下面,修改nginx.conf

http
{
 
 include  mime.types;
 default_type  application/octet-stream;
 server_names_hash_bucket_size 128;
 client_header_buffer_size 16k;  //这里默认是4K,改大一点就好了
 
}

方法二:

在nginx.conf的http模块中添加

client_header_buffer_size 16k;默认是4K,改大一点就好了
large_client_header_buffers 4 16k;

nginx默认的header长度上限是4k,如果超过了这个值

如果header头信息请求超过了,nginx会直接返回400错误

可以通过以下2个参数来调整nginx的header上限

client_header_buffer_size 16k;

large_client_header_buffers 4 16k;

下面讲讲这两个参数以及他们之间的关联关系:

对nginx处理header时的方法:

先处理请求的request_line,之后才是request_header。

这两者的buffer分配策略相同。

先根据client_header_buffer_size配置的值分配一个buffer,如果分配的buffer无法容纳 request_line/request_header,那么就会再次根据large_client_header_buffers配置的参数分配large_buffer,如果large_buffer还是无法容纳,那么就会返回414(处理request_line)/400(处理request_header)错误。

如果你的请求中的header都很大,那么应该使用client_header_buffer_size,这样能减少一次内存分配。

如果你的请求中只有少量请求header很大,那么应该使用large_client_header_buffers,因为这样就仅需在处理大header时才会分配更多的空间,从而减少无谓的内存空间浪费。

针对get请求,解决请求串过长的问题:

针对get请求,我们可以通过修改另外两个配置来解决请求串超长的问题:client_header_buffer_size语法:client_header_buffer_size size默认值:1k使用字段:http, server这个指令指定客户端请求的http头部缓冲区大小绝大多数情况下一个头部请求的大小不会大于1k不过如果有来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓冲区,这个值可以在large_client_header_buffers里面设置。large_client_header_buffers语法:large_client_header_buffers number size默认值:large_client_header_buffers 4 4k/8k使用字段:http, server指令指定客户端请求的一些比较大的头文件到缓冲区的最大值,如果一个请求的URI大小超过这个值,服务器将返回一个"Request URI too large" (414),同样,如果一个请求的头部字段大于这个值,服务器将返回"Bad request" (400)。缓冲区根据需求的不同是分开的。默认一个缓冲区大小为操作系统中分页文件大小,通常是4k或8k,如果一个连接请求将状态转换为keep-alive,这个缓冲区将被释放。

那么有人就会觉得奇怪了,为什么修改http header的大小就能解决get请求串过长的问题呢,这就要从http协议的get请求说起了,其实GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中)。

--------------------------------------------------------------------------------

nginx服务器提示错误:400 Bad RequestRequest Header Or Cookie Too Large

解决方法,增大请求缓冲,编辑nginx.conf

vi /usr/local/nginx-generic-1.6.0/conf/nginx.conf

(nginx-generic-1.6.0这个路径需要根据安装nginx版本)

修改下面两个配置项为:

client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
转载请说明出处
仿站网 » 网页出现400错误Bad Request Request Header Or Cookie Too Large错误的解决方法

发表评论

您需要后才能发表评论

仿站网专注帝国cms仿站,Zblog仿站,Wordpress仿站服务,专业+效率+售后保障

关于我们 联系客服
 
QQ在线咨询
客服热线
139-3511-2134