web-dev-qa-db-ja.com

ブラウザはそれに応じてhttpおよびhttpsリクエストを送信する方法

プロトコルなしでWebサイト名を入力すると、ブラウザは正しいプロトコル(httpまたはhttps)を使用して正しいWebサイトを提供します。

たとえば、google.comと入力してリターンキーを押すと、ブラウザから https://google.com

ブラウザはこれをどのように行いますか?

2
bula

これは標準化された動作ではありません。ユーザーがプロトコルを指定しない場合にクライアントがどのように動作するかをRFCドキュメントに記載していないためです。ただし、ほとんどのデフォルト構成では、クライアントは最初に安全でない接続(http://など)を使用して接続を試みます。彼らはあなたがあなたのURLの前にhttp://をタイプするつもりだったと推測しているだけです。

その場合、このサイトが安全な接続(https://など)を介して利用可能であると判断するのはクライアントではなく、クライアントの要求をリダイレクトするのはWebサーバーです。したがって、ブラウザのアドレスバーにgoogle.comと入力すると、ブラウザは最初にhttp://google.comに接続し、google.comのウェブサーバーはリクエストをhttps://google.comにリダイレクトします。それがあなたがまだグーグルのhttps://バージョンになってしまう理由です。

アドレスバーに手動でhttp://google.comと入力して、これを試すこともできます。 Googleは引き続きあなたをhttps://google.comにリダイレクトします。しかし、これはそこにあるほとんどのWebサーバーソフトウェアのデフォルトの動作ではありません。GoogleはWebサーバーの構成で「HTTPSリダイレクト」を手動で指定する必要がありました。

それでも、一部のクライアントは最初にhttps://- connectionを試行し、それが失敗した場合にのみhttp://を介して接続する可能性があります。これはより安全な動作であり、ほとんどの場合、おそらくデフォルトではありませんが、たとえば、 [〜#〜] hsts [〜#〜] これにより、サイトはhttps://としてフラグを立てることができ、一部のサイトはブラウザーで事前にフラグが立てられることもあります。 (@kickenが指摘したように、ありがとう!)次に、この手順を実装するブラウザープラグイン(Firefoxの場合は「HTTPSEverywhere」など)があります。これらのプラグインには、https://で保護された接続を提供するサイトのリストが付属しており、ユーザーがhttp://を使用して、または前面にプロトコルを使用せずにそのようなサイトのURLを入力すると、ユーザーはブラウザではなく、ブラウザによってhttps://バージョンにリダイレクトされます。ウェブサイト管理者が自分のサイトにHTTPSリダイレクトを設定していなくても、ウェブサーバー。

5
LukeLR