nginx开启http2导致的服务验证码不可用问题

这篇具有很好参考价值的文章主要介绍了nginx开启http2导致的服务验证码不可用问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

新搭建了一套开源的系统。通过nginx做了https反向代理后无法显示验证码。
nginx开启http2导致的服务验证码不可用问题,nginx,redis,运维
具体报错: Uncaught TypeError: Cannot read properties of null (reading ‘property’)
点击报错后跳转到方法: xhr.getAllResponseHeaders()
问题就出在这个方法,但不知识具体原因。

通过做实验方法排除。

新搭建一个nginx只配置一个域名。发现同样的配置又能正常访问。
通过正常请求和异常请求的nginx日志分析,发现异常请求时使用的HTTP/2.0协议。
多次验证后在新环境配置上加了http2协议支持后问题复现。
最后得到结论是nginx开启了http2协议问题导致。

反找问题根源

1、因服务器有多个站点,一个站点开通了http2所有站点默认都开启http2。所以相同的配置在只有一个站点的服务器上访问没有问题。多站点上就出现了问题。
参考:Nginx 设置http1.1和http2

2、再用关键字搜索: http2 xhr.getAllResponseHeaders()
找到: XHR.getAllResponseHeaders() does not return headers as expected in Chrome 60
又通过上面的回复找到: Web compat implications of making getAllResponseHeaders lowercase

最终得到结论:

When reading the specification I can’t see any place saying that getAllResponseHeaders() must returns header names in lower case, furthermore since HTTP2 servers must return header in lower case getAllResponseHeaders() will return header in lower case for this specific protocol.

在阅读规范时,我看不到任何地方说getAllResponseHeaders()必须以小写形式返回标头名称,此外,由于HTTP2服务器必须以小写形式返回标头getAllResponseHeaders()将返回此特定协议的小写标头。文章来源地址https://www.toymoban.com/news/detail-519323.html

到了这里,关于nginx开启http2导致的服务验证码不可用问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx 开启https时反向代理http服务的问题

    当我们用nginx开启https时,反向代理一个本地的http服务,会遭遇跨域问题,报错 strict-origin-when-cross-origin ,导致很多资源无法加载。 这时只要在反向代理部分的配置文件中加入这一条语句即可:

    2024年02月14日
    浏览(43)
  • 【生产问题记录】一次简单的 Http 请求异常处理 (请求的 url 太长, Nginx 直接返回 400, 导致请求服务异常)

    按照惯例直接说结论。 后台服务 A 有一个 Http 接口, 代码如下: 没错, 一个 Get 请求, 入参是一个 List 。 同时有另一个后台服务 B, 里面有段逻辑会通过 RestTemplate 调用服务 A 的这个接口, 代码如下: 在服务 B 中, 通过 batchGetUserInfo 方法请求服务 A 时, 传入了一个长度为 122 的 List

    2024年01月16日
    浏览(56)
  • DEDECMS不能切换皮肤 验证码不显示的解决办法

    在织梦网站后台中默认是有四种皮肤可以自由切换,后来遇到一个问题,就是皮肤切换不了了,连登陆的验证码也不显示了,这里给大家分析一下这个问题。 织梦后台皮肤的切换: 打开 templetsdefaultjschangeSkin.js 文件   找到以下代码(大概在11行):   添加文件夹名/dede  

    2024年02月03日
    浏览(32)
  • 一键去除网页BOM属性【解决乱码,头部空白,验证码不显示问题】

    几个常出现的问题: 1.网站打开空白 2.页面头部出现多余的空白 3.网站出现乱码,如“锘�” 4.后台登录验证码不显示  解决方案: 1.选用专业的编辑器,例如notepad++,sublime,editplus这样不会自动签名。 2.sublime通过如下操作File - Save with Encoding - UTF-8保存后即可去除bom 3.notep

    2024年02月14日
    浏览(37)
  • 宝塔编译Nginx开启HTTP/3.0+Brotli

            nginx的“quic”分支中开发的代码已合并到nginx主线中,并且自1.25.0发布以来一直是nginx的一部分。目前QUIC和HTTP / 3支持是实验性的,需要注意的是使用提供QUIC支持的SSL库来构建nginx。 在/www/server/目录下创建文件夹,例如:命名为nginxmodel 下载源码并解压到/www/serve

    2024年02月05日
    浏览(97)
  • http1.1与http2.0

    通俗来讲,http就是计算机通过网络进行通信的规则,是一个基于 请求与响应 , 无状态的 , 应用层协议 。常用于 TCP/IP协议 传输数据。目前任何终端之间任何一种通信方式都必须按Http协议进行,否则无法连接。tcp(三次握手,四次挥手)。 请求与响应 :客户端请求、服务端

    2023年04月19日
    浏览(69)
  • Http1和Http2的区别

    一、HTTP1和HTTP2的区别 1.新的二进制格式:HTTP2采用二进制格式而HTTP1使用文本格式。 2.多路复用:HTTP2是完全多复用的,而非有序并阻塞的,只需一个连接即可实现并行。HTTP1一个连接只能发送一个请求。 3.首部压缩:HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2

    2024年02月16日
    浏览(34)
  • FireFox禁用HTTP2

    最近需要调试接口,但是,Chrome都是强制使用h2协议,即HTTP/2协议。为了排除h2协议排除对接口调用的影响,需要强制浏览器使用HTTP1协议。 设置firefox的network.http.http2.enabled为禁用,这样就禁用http2协议。 这样就强制Firefox使用http1协议,请求后台接口。

    2024年02月10日
    浏览(34)
  • win11 系统暂无可用音频设备导致播放失败/音频服务未响应

    win11再一次更新后音频突然用不了了,驱动和输出设备都显示正常,但每次播放就会出现下面的问题,重启和更新驱动也没用。最后百度了好久终于解决了。 最后发现可能是新的驱动和电脑不兼容,重装回原来的驱动即可。 1.按下键盘win+x,打开设备管理器,展开’声音、视频

    2024年02月11日
    浏览(54)
  • HTTP1.1、HTTPS、HTTP2.0 、HTTP3.0

    优点: 整体方面:简单、灵活和易于扩展、应用广泛和跨平台 性能方面:长连接、管道网络传输解决请求队头阻塞(没有使用) 缺点: 安全方面:无状态、明文窃听、伪装、篡改 性能方面: Header未经压缩就发送,只能压缩body,头部冗长 每次发送相同的首部造成比较多的

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包