400 Bad Request错误源于客户端请求语法异常,需依次排查URL非法字符与长度、异常请求头、损坏或超长Cookie、反向代理/CDN配置不当、以及客户端代码中HTTP请求构造错误。

当您访问某个网页时,浏览器显示“400 Bad Request”错误,表明客户端发送的请求存在语法问题,服务器无法理解或处理该请求。以下是针对此错误的多种排查与修复方法:
一、检查URL中是否存在非法字符或过长参数
URL中若包含空格、未编码的特殊符号(如{、}、|、、%等)或超长查询字符串,服务器可能拒绝解析并返回400错误。
1、复制当前地址栏中的完整URL,粘贴至文本编辑器中查看是否有明显异常字符。
2、将URL中所有空格替换为%20,将中文及其他非ASCII字符使用UTF-8编码后进行URL编码(例如“测试”编码为%E6%B5%8B%E8%AF%95)。
3、若URL中存在大量参数(尤其是通过GET提交的表单),尝试缩短参数长度或改用POST方式提交。
二、清除浏览器请求头中的异常自定义字段
某些浏览器扩展、调试工具或前端脚本可能向请求中注入格式错误或不被接受的HTTP头部字段(如重复的Host、非法的Content-Length值、未规范的大写字段名),触发400响应。
1、在Chrome中按F12打开开发者工具,切换到Network标签页,刷新页面,点击出错的请求,查看Headers面板下的Request Headers部分。
2、查找是否存在非标准字段(如X-My-Custom-Header: [object Object])、重复字段(如两个User-Agent行)或值为空但字段名存在的条目。
3、禁用所有浏览器扩展,重启浏览器后重试;若错误消失,则逐个启用扩展定位问题源。
三、验证Cookie内容是否损坏或超长
Cookie若包含非法字符、未正确编码的二进制数据、或总长度超过服务器设定上限(常见为4KB),可能导致整个HTTP请求被判定为格式错误。
1、在开发者工具Application标签页中,展开Cookies,选中当前站点域名,逐条检查各Cookie的Name和Value是否含控制字符(如\x00–\x1F)、换行符或未闭合引号。
2、记录当前所有Cookie总大小:右键点击Cookies列表空白处,选择“Copy All as cURL”,粘贴至文本工具中估算长度;若接近或超过4096字节,需清理过期或冗余项。
3、在浏览器设置中清除该网站的全部Cookie与站点数据,然后重新登录或加载页面。
四、检查反向代理或CDN配置是否截断/篡改请求
当网站部署于Nginx、Apache或Cloudflare等代理服务之后,若配置不当(如client_header_buffer_size过小、underscores_in_headers on、或强制校验特定Header格式),会主动拒绝合法但“不合规”的请求。
1、临时绕过CDN:获取源站IP(如通过nslookup或dig命令查A记录后直连IP),在hosts文件中将域名映射至该IP,再访问测试是否仍报400。
2、检查Nginx配置中是否存在类似client_max_body_size 1m;但未同步设置client_header_buffer_size和large_client_header_buffers的组合限制。
3、若使用Cloudflare,在Dashboard中进入Rules → HTTP Request Rules,确认无误匹配并修改Host、User-Agent等字段的规则。
五、审查客户端代码中构造的HTTP请求
JavaScript发起的fetch或XMLHttpRequest若手动拼接请求体、设置非法Content-Type值(如application/json; charset=utf-8; boundary=xxx)、或body为未序列化的对象,均会导致400错误。
1、在fetch调用前添加console.log(JSON.stringify(options)),确认method、headers、body结构符合目标API要求。
2、确保Content-Type与实际body格式严格一致:发送JSON时使用application/json且body为JSON.stringify()结果;上传文件时使用FormData对象而非手动构造multipart边界。
3、检查Authorization头格式是否缺失Bearer前缀或token含不可见字符(如复制时带入零宽空格U+200B)。










