ホームページ > バックエンド開発 > Golang > 相対 HTTP リクエストで request.URL.Host と request.URL.Scheme が空白になるのはなぜですか?

相対 HTTP リクエストで request.URL.Host と request.URL.Scheme が空白になるのはなぜですか?

DDD
リリース: 2024-12-17 01:33:23
オリジナル
121 人が閲覧しました

Why Are request.URL.Host and request.URL.Scheme Blank in Relative HTTP Requests?

開発サーバーの URL ホストとスキームの決定: 空白になるのはなぜですか?

相対パスから HTTP サーバーにアクセスする場合、そのまま開発環境ではよくあることですが、特定の URL 属性が空白で表示されることがあります。具体的には、request.URL.Host および request.URL.Scheme は空の値を返す場合があります。

なぜこれが起こるのですか?

相対 HTTP リクエスト。通常、次の場合にブラウザによって発行されます。ローカルでサーバーにアクセスすると、明示的なホストとスキームの情報が不足します。これは、リクエストにこれらの詳細が含まれる HTTP プロキシで使用される絶対 URL とは対照的です。相対リクエストの場合、http.Request.URL オブジェクトでは生の URL のみが使用可能です。

HTTP ホストへのアクセス

HTTP ホストを取得するには、 http.Request 構造体の Host 属性にアクセスできます。これにより、リクエストの Host ヘッダーで指定されたホスト名とポートが提供されます。

相対 URL と絶対 URL の区別

を呼び出すことで、リクエストで相対 URL が使用されているか絶対 URL が使用されているかを判断できます。 http.Request.URL の IsAbs() メソッド。 IsAbs() が false を返す場合、URL は相対的であり、ホストまたはスキーム情報は含まれません。

Netcat を使用した例

違いを示すために、netcat を使用できます。相対パスを使用して HTTP リクエストを送信します。

cat my-http-request-file | nc localhost 8080
ログイン後にコピー

my-http-request-file には次の内容が含まれている必要があります。 HTTP リクエストとしてフォーマットされます:

GET / HTTP/1.1
Host: localhost:8080
ログイン後にコピー

このリクエストはハンドラーに空の r.URL.Host 値と r.URL.Scheme 値を返します。

以上が相対 HTTP リクエストで request.URL.Host と request.URL.Scheme が空白になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート