HTTP GETリクエストでのポート番号の使用法は何ですか?


2

HTTP GETメッセージには、次のHOSTフィールドがあります。

ホスト。
サーバーのドメイン名(仮想ホスティング用)、およびサーバーがリッスンしているTCPポート番号。ポートが要求されたサービスの標準ポートである場合、ポート番号は省略できます。

このフィールドには、ポート番号があります。ポート番号がトランスポート層にあることを知っています。では、HTTP GETメッセージのポート番号は何に使用されますか?

回答:


3

いくつかのことに役立ちます。そのうちの1つは、プロキシでURLを生成するためです。nginx実際のHTTPサーバーがポート7790で実行されている間に、ポート80で負荷分散プロキシとして構成した可能性があります。Webサーバーがそれ自体に戻る絶対URLを作成する必要がある場合、それは内部ネットワーク情報を与えるだけです。HTTPヘッダーを調べて、実際のクライアントとは何か、URLを生成するためにサーバーにアクセスする方法を知る必要があります。


最初の2文が理解できます。わかりませんIf the web server needs to create an absolute URL back to itself, it can't use the transport layer information, because that'll just give it the internal network info. It needs to look at the HTTP headers to know what the real client is and how they are accessing the server to generate the URLs. 。もっと明確にできますか?ありがとう
misteryes

その上、あなたはいくつかのことがあると言いました、他の有用なものはどうですか?
ミステリー

@misteryesにクライアントが接続している場合http://ex.com:8080、その接続は(3つのWebサーバ上でロードバランスされているint.ex.com:7001int.ex.com:7002int.ex.com:7003)、その後、Webサーバはできません、それは正しくありませんので、ポートを見つけるために、トランスポート層を見てください。PHPスクリプトがページにリンクを書きたい場合、単に使用することはできませんhttp://int.ex.com:7001/somelink。これHostを行うには、フィールドを使用する必要があります。これにより、クライアントがクリックすると、正しいURLに移動します。
ダースアンドロイド

TCP接続はクライアントとex.com:80の間にあるだけで、クライアントとex.com:7001、ex.com:7002の間にTCP接続はありませんか?
ミステリー

正しい。ロードバランサ(からex.com:80)への接続がありますがex.com:7001、クライアントからへの直接接続はありませんex.com:7001。また、ほとんどの場合、Webページは相対ハイパーリンクを使用するため、ホスト/ポートを知ることは一般的な問題ではありませんが、潜在的には可能性があります。より一般的なシナリオは、ロードバランサーまたはプロキシにX-HTTPSヘッダーを設定させ、クライアントがhttpsで接続したかどうかを示すことです。同じ概念-Webサーバーは実際のクライアント接続を認識しないため、プロキシまたはロードバランサーは、HTTPヘッダーにすべての情報が含まれていることを確認する必要があります。
ダースAndroid
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.