问题
- 我是否必须查看响应标头来
X-Firefox-Spdy
确定实际使用了哪种协议? - 我是否可以假设 Nginx 在实现完成后将报告 HTTP/2 状态代码,因为这是预期的行为,还是关于状态代码有一些我不知道的事情?
撰写此问题找到的信息:
调查及细节
我目前正在检查我的服务器设置,并且对我在浏览器的开发人员控制台中看到的 http 状态代码有点困惑。
我的服务器运行的是 Ubuntu 14.04,并安装了更新版本的 Nginx(电力供应协议)。Nginx 配置为使用 SPDY 和自签名证书。我认为 SPDY 配置正确,因为 Qualys SSL Labs 测试报告称服务器提供 SPDY 3.1(当然还有大量的浏览器插件),但这是否HTTP/1.1 200
正确?
这是来自我的服务器的完整请求:
Request-URL: https://myserver/lib/dojo/something.js?123456789
Request-Methode: GET
Status-Code: HTTP/1.1 200 OK
Request-Header 13:50:30.000
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0
Referer: https://myserver/index.php
Pragma: no-cache
Host: myserver
DNT: 1
Connection: keep-alive
Cache-Control: no-cache
Accept-Language: de-DE,en-US;q=0.8,de;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept: */*
Sent Cookie
-xxx-
Response-Header Δ1ms
X-Firefox-Spdy: 3.1
Strict-Transport-Security: max-age=15768000; includeSubDomains
Server: nginx/1.9.3
Last-Modified: Tue, 08 Sep 2015 08:46:10 GMT
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Etag: "-xxx-"
Date: Sat, 12 Sep 2015 11:50:30 GMT
Content-Type: application/javascript
Content-Length: 435035
Cache-Control: max-age=315360000
Accept-Ranges: bytes
以下是一份外部资产报告请求HTTP/2.0 200
:
Request-URL: https://fonts.googleapis.com/css?family=Ubuntu
Request-Methode: GET
Status-Code: HTTP/2.0 200 OK
Request-Header 13:50:31.000
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0
Referer: https://myserver/index.php
Pragma: no-cache
Host: fonts.googleapis.com
DNT: 1
Connection: keep-alive
Cache-Control: no-cache
Accept-Language: de-DE,en-US;q=0.8,de;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept: text/css,*/*;q=0.1
Response-Header Δ87ms
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
X-Firefox-Spdy: h2
X-Content-Type-Options: nosniff
Timing-Allow-Origin: *
Server: GSE
Expires: Sat, 12 Sep 2015 11:50:31 GMT
Date: Sat, 12 Sep 2015 11:50:31 GMT
Content-Type: text/css
Content-Length: 308
Content-Encoding: gzip
Cache-Control: private, max-age=86400
alternate-protocol: 443:quic,p=1
Alt-Svc: quic=":443"; p="1"; ma=604800
access-control-allow-origin: *
我读过这个公告NGINX 计划如何支持 HTTP/2,这让我明白了为什么我仍然会看到对使用 HTTP/1.1 的应用程序的请求。但是我自己并没有用补丁编译 Nginx,也不知道在源代码中要查找什么,但我的猜测是,即使使用HTTP/1.1
SPDY,HTTP/2 之前的 Nginx 也只会报告状态代码,而其他软件(如 GSE)的行为可能会有所不同。