[英]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) 檢查它?
可能是以下兩個原因之一:
您正在使用防病毒軟件,並且您的流量是中間人,因此將您降級到 HTTP/1.1。 關閉 AV 上的 https 流量監控以直接連接到服務器。 您可以通過使用在線工具測試您的站點是否支持 HTTP/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.