ブラウザと Google の間の HTTP 交換の一部を調べていたところ、この質問が表示されました。
つまり、私のブラウザ (Firefox 36.0.4) は HTTP/1.1 リクエストを作成し、Google は HTTP/2.0 で応答しています。要求されたプロトコルで応答しようとはしません。HTTP/2.0 仕様の多くがすでに SPDY を介してでたらめな方法で実装されていることは承知していますが、これはクライアントとの不十分な交渉のように思えます。
ヘッダーでプロトコルを宣言する目的は、サーバーがクライアントへの応答方法を決定できるようにすることだと思いました。これは、次の 3 つの方法のいずれかです。
1.クライアントがサーバーの優先プロトコルを要求したため、サーバーは通常どおり要求を続行します。
2.クライアントは、サーバーがサポートする別のプロトコル バージョンを要求しました。サーバーは要求プロトコルで応答しますが、優先プロトコルを示すアップグレード ヘッダーが含まれています。クライアントは、サーバーが 101 Switching Protocols 応答を送信し、優先プロトコルに切り替える時点でアップグレードを要求することができます。
3.クライアントがサポートされていない、または古いプロトコルを要求した場合、サーバーはアップグレード ヘッダーでサポートされているプロトコル (優先順位の降順) を含む 426 Upgrade Required 応答を送信します。クライアントは、サポートされているプロトコルを使用して要求を繰り返す必要があります。
4.クライアントは、完全にサポートされていないメジャー プロトコル バージョンを再要求しました。たとえば、サーバーは HTTP/1.x のみをサポートしていますが、HTTP/2.x です。サーバーが 505 HTTP Version Not Supported で応答する
Google とのやり取りはこれを行っていません。これは悪い習慣ですか、それとも何か不足していますか?
ランダムに選択された例:
https://plus.google.com/u/0/_/notifications/frame?querystring=blahblahblah
GET /u/0/_/notifications/frame?querystring=blahblahblah HTTP/1.1
Host: plus.google.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.google.co.uk/?gfe_rd=cr&ei=Lc8bVcXFOKbj8we_uIKYDg&gws_rd=ssl
Cookie: NID=67=iZxcMVTvg-6PsQIUpZ5tSPL-7-uJdls3vdci3afLmoLCpD5JOq0NfzhTnnpcCW9ymbXsn3GRGxfSgYlXGEk9XmnbUne0LCPrUc_ahhpc5wV6n-GZ8F7s-JS-JWgZWEwri-GaWXK1vgyRw7jMbqEiAUSRCzs1Fr1K6ZUIH0EpJdlwZD-K26MJNazpyHL_vZ5k4m8NrtFDkAoYPw; OTZ=2759671_52_56_123900_52_436380; SID=DQAAAP0AAAAqKgGz5aFNESd464Z_jUsmTi7JQfEKsuWkGZVJe8QvdbOPTZpL5ZNjKSsSSg9QvJglP-aMNLrgn2b7MsDF_4Z7Ebe1X347Cd3-j3ktLedgmq9nRO92hxEseqf974VNumrst-XqMj9Oq_xf-KDz-CDEJ1XiqWZYVHurV-IrXib5ei7x9dqlLF2NSPYLaCxlrwKdjCQX-FDDB03FWEuE7dIMYs3BQ-_NU5fG9os6I6r6ABy9mkiy84rraZFVthd38VJF5z2WYmgQ55QJPr9EDpSA5VKH1tbW6XyLjZLt5EEEj1xoqRF4EguRkIOiG8IiqRs49GnwqQSCpTw3ROW-jNDI; HSID=A7u8vyQI-v7jJSEbS; SSID=AOojY4hDLYgnSjUrK; APISID=z23KH1a0VsBukvMu/ARaOeOni08HfbGg6R; SAPISID=5iTgyxKDRPP7fNtF/AdiFbKNYN04h7n6cu; PREF=ID=cc54787f58f50d42:U=8e10581450dbe3b5:FF=0:LD=en:TM=1416091562:LM=1418086819:GM=1:S=0KVfl2hqkG8Psvwv; OGP=-5061451:-5061492:; OGPC=4061155-1:
Connection: keep-alive
HTTP/2.0 200 OK
Alternate-Protocol: 443:quic,p=0.5
Cache-Control: private, max-age=0
content-security-policy-report-only: script-src 'unsafe-inline' 'unsafe-eval' 'self' https://*.googleapis.com https://*.gstatic.com https://apis.google.com https://www.google-analytics.com https://www.googletagmanager.com https://*.talkgadget.google.com https://pagead2.googleadservices.com https://pagead2.googlesyndication.com https://tpc.googlesyndication.com https://s.ytimg.com https://www.youtube.com https://clients1.google.com https://www.google.com;report-uri /_/cspreport/es_oz_20150330.18_p0
Content-Type: text/html; charset=utf-8
Date: Wed, 01 Apr 2015 10:57:55 GMT
Expires: Wed, 01 Apr 2015 10:57:55 GMT
Server: GSE
x-content-type-options: nosniff
x-ua-compatible: IE=edge, chrome=1
X-XSS-Protection: 1; mode=block
X-Firefox-Spdy: h2-15