您好!欢迎访问否玩代码!
广告位

HTTP 400 错误到底是谁的锅?5分钟自查+修复指南

栏目: 日期: 浏览:150

上网页的时候, 浏览器猛地弹出“400 Bad Request”差错, 表示自己处在迷茫状态: 到底是我的网络存在状况, 还是服务器出现故障了?

实际上, 400 Bad Request算是HTTP协议常见的客户端错误, 其核心意思是, 服务器没办法理解你发送过来的请求, 这是由于请求格式错了。问题基本上是出在你这儿, 而不是网站服务器那边。

一、最常见的三个原因

URL 地址拼写错误:比如多了特殊字符、空格,或中文字符未正确编码。例如:https://www.example.com/测试?id=1,浏览器可能无法解析,应改为 https://www.example.com/%E6%B5%8B%E8%AF%95?id=1

浏览器的缓存出现损坏现象, 或者是Cookie也出现了损坏, 过期的缓存数据致使请求头产生异常状况, 进而才让服务器觉得那是无效请求。

请求头存在过大状况, 或者含有非法字段, 这常见于开发场景之中, 比如说当你发送 POST 请求的时候, HTTP 头里携带了大文件, 又或许是格式错误的数据。

二、站长/开发者自查流程

1. 从浏览器中清除缓存以及Cookie, 对于Chrome浏览器而言, 具体操作是进入设置选项, 接着找到隐私和安全这一范畴, 然后选择清除浏览数据的相关功能, 在此过程中要勾选“Cookie和其他网站数据”以及“缓存的图片和文件”这些选项。

2. 查看 URL 之中是不是含有不合法的字符, 可以推选出借助 encodeURIComponent() 来为参数开展编码操作。

3. 通过运用开发者工具, 即按下F12键后切换至Network标签, 以此来查看具体的请求头。倘若服务器返回了400, 通常会附有描述Bad Request的细节文本, 像是当出现“Header too large”这种情况时, 就表明请求头超出了限定范围。

4. 试着采用无痕模式去访问, 或者借助另一个浏览器来访问, 以此排除扩展插件所带来的干扰。

三、后端排查(如果你是运维)

配置 Nginx, 需查看 error.log, 常见的报错像"400 Bad Request", 是由于 large_client_header_buffers 设置得过小而导致的, 解决的办法是增大缓冲区:

large_client_header_buffers 4 16k;

Apache的配置情况, 要去检查LimitRequestLine这个指令, 看它是不是限制得太小了, 建议把它设置成LimitRequestLine 8190。

四、最终提示

要是你于开发测试之际老是碰到400错误, 那么建议你去首先核查Content-Type是不是跟后端接口所要求的契合(假若是application/json写成了text/plain这样的情况)。要记住: 400属于客户端错误, 修复走向一直都是你发出的请求格式。

有更多的代码以及调试工具, 热烈欢迎前往访问: 名为否玩代码编辑的网站, 网址是https://www.fouwan.com