簡體   English   中英

為什么 Chrome 瀏覽器不能識別我的 http2 服務器?

[英]Why doesn't Chrome browser recognize my http2 server?

我按照Digital Ocean 論文設置了我的 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

我的服務器運行的是 Ubuntu 16.04 LTS,它支持 ALPN 和 NPN,它附帶的 openssl 版本是 1.0.2g。

我用這個工具站點檢查了 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) 檢查它?

可能是以下兩個原因之一:

  1. 您正在使用防病毒軟件,並且您的流量是中間人,因此將您降級到 HTTP/1.1。 關閉 AV 上的 https 流量監控以直接連接到服務器。 您可以通過使用在線工具測試您的站點是否支持 HTTP/2來檢查是否屬於這種情況。

  2. 根據上述指南的第 5 步,您正在使用舊的 TLS 密碼,特別是 Chrome 不允許 HTTP/2 ( https://http2.github.io/http2-spec/#BadCipherSuites ) 使用的密碼。 使用https://www.ssllabs.com/ssltest/掃描您的站點以檢查您的 TLS 配置並對其進行改進。

第三個原因是您的 SSL/TLS 庫中缺少 ALPN 支持(例如,您使用的是 openssl 1.0.1 並且需要是 1.0.2 或更高版本)但您已經確認您有 ALPN 支持,因此跳過它這個答案。

我遇到過同樣的問題。 我的情況是因為我在 NGINX 中啟用了 TLS1.3。 請參閱為什么我的網站在啟用了 http/2 時不使用 http/2

就我而言,chrome 在 chrome-net-export-log.json 文件中生成了以下摘錄。

HTTP2_SESSION_RECV_INVALID_HEADER
--> error = "標題名稱中的字符無效。"
--> header_name = "x-xss-protection:"
--> header_value = "1; mode=block"


從標題名稱中刪除 : 后,問題得到解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM