【问题标题】:Why doesn't Chrome browser recognize my http2 server?为什么 Chrome 浏览器无法识别我的 http2 服务器?
【发布时间】:2017-04-28 05:12:55
【问题描述】:

我按照Digital Ocean paper 设置了我的 Nginx conf, 现在可以使用 http2。

但在 Chrome(版本 54.0.2840.98(64 位))开发工具中,它始终使用 HTTP 1/1:

NAME             METHOD  STATUS  PROTOCOL
shell.js?v=xx..    GET    200     http/1/1

我的服务器运行的是支持 ALPN 和 NPN 的 Ubuntu 16.04 LTS,它附带的 openssl 版本是 1.0.2g。

我用this tool site检查了http2支持,结果是:

Yeah! example.com supports HTTP/2.0. ALPN supported...

也可以用 curl 检查:

 $ curl -I --http2 https://www.example.com
  HTTP/2 200 
  server: nginx/1.10.0 (Ubuntu)
  date: Tue, 13 Dec 2016 15:59:13 GMT
  content-type: text/html; charset=utf-8
  content-length: 5603
  x-powered-by: Express
  cache-control: public, max-age=0
  etag: W/"15e3-EUyjnNnyevoQO+tRlVVZxg"
  vary: Accept-Encoding
  strict-transport-security: max-age=63072000; includeSubdomains
  x-frame-options: DENY
  x-content-type-options: nosniff

我还从控制台检查了 is-http2 cli:

is-http2 www.amazon.com
× HTTP/2 not supported by www.amazon.com
Supported protocols: http/1.1

is-http2 www.example.com
✓ HTTP/2  supported by www.example.com
Supported protocols: h2 http/1.1

为什么 Chrome 不能识别它?

如何使用 Safari (v 10.0.1) 进行检查?

【问题讨论】:

  • Stack Overflow 用于编程问题。在Server Fault 上可以更好地处理服务器软件支持(但请先阅读他们的规则!)。
  • 好的,谢谢,不知道...移动了我的问题..我会关闭那个

标签: google-chrome nginx webserver http2


【解决方案1】:

在我的例子中,chrome 在 chrome-net-export-log.json 文件中生成了以下摘录。

HTTP2_SESSION_RECV_INVALID_HEADER
--> 错误 = “标头名称中的无效字符。”
--> header_name = “x-xss-protection:”
--> header_value = “1; mode=block "


从标题名称中删除 : 后,问题已解决。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我的情况是因为我在 NGINX 中启用了 TLS1.3。见Why is my site not using http/2 while it is http/2 enabled

    【讨论】:

      【解决方案3】:

      可能是以下两个原因之一:

      1. 您正在使用防病毒软件,它是 MITM 您的流量,因此将您降级到 HTTP/1.1。关闭 AV 上的 https 流量监控以直接连接到服务器。您可以使用an online tool to test your site for HTTP/2 support 来检查是否是这种情况。

      2. 根据上述指南的第 5 步,您正在使用旧的 TLS 密码,特别是 Chrome 不允许 HTTP/2 (https://http2.github.io/http2-spec/#BadCipherSuites) 使用的密码。使用https://www.ssllabs.com/ssltest/ 扫描您的网站以检查您的 TLS 配置并进行改进。

      第三个原因是lack of ALPN support in your SSL/TLS library(例如,您使用的是 openssl 1.0.1 并且需要一个 1.0.2 或更高版本)但您已经确认您支持 ALPN,因此请跳过此答案。

      【讨论】:

      • @BassaDP,谢谢 .. 已经评论了您的答案(我正在运行防病毒软件,不包括我的 example.com 域解决了这个问题).. 很抱歉 X-posting 这个问题,因为它是三十二号上校建议!
      • 我也可以确认这可能是由杀毒软件引起的。就我而言,这是导致问题的原因。在“Web 访问保护”->“Web 协议”下禁用“启用 HTTPS 检查”允许 http/2 工作(不幸的是,将地址添加到他们的白名单似乎并没有解决问题)。
      • Bitdefender(免费)也会导致这个问题。最糟糕的是,它不提供仅关闭 https 保护的选项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多