HTTP(非HTTPS)サイトにPOSTリクエストを行い、そのリクエストをChromeのデベロッパーツールで調べたところ、サーバーに送信する前に独自のヘッダーが追加されていることがわかりました。
Upgrade-Insecure-Requests: 1
Upgrade-Insecure-Requests
で検索した後、私は見つけることができる 情報 サーバー送信について これ ヘッダー:
Content-Security-Policy: upgrade-insecure-requests
これは関連しているように見えますが、私の場合はCLIENTがRequestでヘッダーを送信しているのに対して、私が見つけた情報はすべてSERVERがResponseで関連ヘッダーを送信することに関するものです。 。
では、なぜChrome(44.0.2403.130 m)が私のリクエストにUpgrade-Insecure-Requests
を追加するのですか。
このヘッダはそれ以来 W3C勧告候補 として追加され、そして現在正式に認識されています。
この質問に出くわしただけで混乱している人のために、Simon Eastによる すばらしい答え はそれをうまく説明しています。
Upgrade-Insecure-Requests: 1
ヘッダはかつてHTTPS: 1
以前のW3Cワーキングドラフト であり、変更が正式に承認される前はChromeによってquietlyに変更されました。
(この質問は、この移行中に、このヘッダに関する公式の文書がなく、Chromeがこのヘッダを送信した唯一のブラウザだったときに尋ねられました。)
簡単な答え:それはContent-Security-Policy: upgrade-insecure-requests
レスポンスヘッダと密接に関係しており、ブラウザがそれをサポートしていることを示しています(そして実際にはそれを好んでいます)。
それは私にグーグルの30分かかったが、私はついにそれがW3仕様に埋もれているのを発見した。
仕様のヘッダがHTTPS: 1
であり、Chromiumがそれを実装しているため混乱が生じますが、この後/ コーディングが不十分な多くのWebサイトが壊れました (特にWordPressとWooCommerce)
"私は破損をお詫び申し上げます。私は明らかにdevとbetaの間のフィードバックに基づく影響を過小評価していました。"
- Mike West、 Chrome Issue 501842
彼らの修正はそれをUpgrade-Insecure-Requests: 1
に改名することでした、そして仕様はそれにマッチするように更新されました。
とにかく、これは W3の仕様 からの説明です(当時のとおり) ...
HTTPS
HTTPリクエストヘッダフィールドはサーバにシグナルを送ります クライアントの好みを表す 暗号化され認証されたレスポンス、そして upgrade-insecure-requestsディレクティブをうまく処理できます その設定をできる限りシームレスにすること。...
サーバがHTTPリクエストのヘッダでこの設定に遭遇すると、リクエストされているリソースの潜在的に安全な表現にユーザをリダイレクトするべきです(SHOULD)。
サーバーがHTTPSリクエストのヘッダーでこの設定を検出した場合、リクエストのホストがHSTSセーフまたは条件付きでHSTSセーフである場合、レスポンスに
Strict-Transport-Security
ヘッダーを含める必要があります[RFC6797]。
これが全体の説明です。
HTTP Content-Security-Policy(CSP)のupgrade-insecure-requestsディレクティブは、サイトの安全でないURL(HTTP経由で提供されているもの)を安全なURL(HTTPS経由で提供されているURL)に置き換えます。このディレクティブは、書き直す必要がある安全でない従来のURLが多数あるWebサイトを対象としています。
Upgrade-insecure-requestsディレクティブは、block-all-mixed-contentの前に評価され、設定されている場合、後者は事実上何もしません。どちらか一方を設定することをお勧めしますが、両方は設定しないでください。
Upgrade-insecure-requestsディレクティブは、サードパーティサイトのリンクを介してあなたのサイトを訪れるユーザがトップレベルナビゲーションのためにHTTPSにアップグレードされることを保証しないので、Strict-Transport-Security(HSTS)ヘッダを置き換えませんユーザーがSSLストリッピング攻撃を受けないように、適切な最大経過時間を設定する必要があります。