ホームページ > バックエンド開発 > Golang > Go の開発サーバーの HTTP リクエストでホストとスキームが空白になるのはなぜですか?

Go の開発サーバーの HTTP リクエストでホストとスキームが空白になるのはなぜですか?

Linda Hamilton
リリース: 2024-12-20 07:27:09
オリジナル
284 人が閲覧しました

Why Are Host and Scheme Blank in Go's Development Server HTTP Requests?

Go の開発サーバーの空のホストとスキーム

Go では、開発サーバーを利用して HTTP リクエストを処理するときに、一般的に次のような問題が発生します。 http.Request.URL の Host プロパティと Scheme プロパティが次のように設定されている問題空白。

理由:

(HTTP プロキシなしで) 開発サーバーに直接アクセスする場合、リクエストは多くの場合相対形式で行われます:

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

そのような場合、Go HTTP リクエスト パーサーは URL を相対的なものとして解釈し、結果としてホストとスキームが空になります。 property.

HTTP ホストへのアクセス:

リクエストから HTTP ホストを取得するには、次のコードに示すように、http.Request 構造体の Host 属性にアクセスします。 :

host := r.Host // Returns the host (e.g., "localhost:8080")
ログイン後にコピー

URL の決定タイプ:

URL が絶対か相対かを判断するには、URL 構造体の IsAbs() メソッドを利用します:

isAbsoluteURL := r.URL.IsAbs() // Returns true if the URL is absolute, false otherwise
ログイン後にコピー

Netcat の例:

動作をテストするには、次のような HTTP リクエスト ファイルを作成します。 content:

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

そして次のコマンドを実行します:

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

以上がGo の開発サーバーの HTTP リクエストでホストとスキームが空白になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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