无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(421) http请求报错:421 Misdirected Request的原因和解决办法 HTTP错误421:Misdirected Request原因和解决方法 全网首发(图文详解1)

前沿技术 Micheal 2个月前 (05-28) 25次浏览 已收录 扫描二维码

(421) http请求报错:421 Misdirected Request的原因和解决办法

HTTP错误421,即 “Misdirected Request”,是一种服务器无法产生所需响应的HTTP状态代码。这种错误通常是由于客户端(例如,你的浏览器或者你的app)尝试使用同一的连接(连接复用)来发送不同HTTPS证书的请求所引发的。

原因

错误421通常出现在以下准确场合:

  • 当客户端试图通过重用已经存活的连接,而这个连接是之前一个不同的HTTPS 域名所已经使用过的;
  • 当服务器设置了HTTP/2,并且客户端试图使用同一的连接来发送不同HTTPS证书的请求。

可能的解决方法

  • 确保这个问题不是客户端的问题。错误可能与客户端的商业网络网络配置,比如防火墙,有关。或者检查你的用于发出请求的程序或浏览器的设置。
  • 检查你的服务器是否支持HTTP/2,如果支持,那么应该确认你的服务器的所有虚拟主机(如果有)都对应一个唯一的IP地址且它们的HTTPS证书与共享该IP地址的其他所有主机相匹配。
  • 如果你的服务器是Apache,并且使用了mod_http2模块,记得在配置文件中使 H2Direct 保持关闭状态。打开H2Direct可能会导致HTTP/2连接复用而出现421错误。
  • 如果你控制不了服务器,或者你必须复用HTTPS连接,只能尝试关闭HTTP/2的支持,因为HTTP/2是强制对HTTPS连接复用。在此情况下,你可能需要与你的服务商进行交涉获取进一步的解决方案。

对于服务端的开发者,可以尝试使用如下配置:

如果使用的是nginx服务器,可以在配置文件中添加以下内容,以解决这个问题:

server {
    listen 443 ssl http2;
    server_name example.com;
    ...
    ssl_certificate /etc/nginx/ssl/example.com/server.crt; # 路径为你的证书路径
    ssl_certificate_key /etc/nginx/ssl/example.com/server.key; # 路径为你的私钥路径
    ...
    location / {
        ...
        proxy_set_header Connection "";  # 设置连接头为空
        ...
    }
}

希望以上的信息能对你有所帮助!
(permission denied什么意思) Linux报 “permission denied” 异常的原因以及解决办法 Linux权限问题解决之道 全网首发(图文详解1)
(类方法) 详解Python 实例方法、类方法和静态方法 三种 Python 方法类型: 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝