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

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

DDD
DDDオリジナル
2024-12-13 15:48:25146ブラウズ

Why Are Host and Scheme Attributes Blank in My Go Development Server's Request URL?

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

Go アプリケーション開発の初期段階では、「hello, world」コードを使用してフレームワークに慣れる必要があります。一般。ただし、リクエスト URL から Host 属性と Scheme 属性にアクセスしようとすると、予期しない空白値が発生する可能性があります。なぜこのようなことが起こるのでしょうか?

Go の HTTP ライブラリは、リクエストからの生の URL を解析します。次のような相対パスを使用してサーバーにアクセスする場合:

GET / HTTP/1.1
Host: localhost:8080

URL オブジェクトの Host フィールドと Scheme フィールドは空のままです。

対照的に、プロキシからサーバーにアクセスする場合は、 、次のような絶対 URL が使用されます:

GET http://localhost:8080/ HTTP/1.1
Host: localhost:8080

これにより、これらが適切に入力されます。

HTTP ホストを取得するには、http.Request 構造体の Host 属性を直接使用することを検討してください。

さらに、URL のタイプ (相対または絶対) を判断するには、 IsAbs() メソッド:

isAbsoluteURL := r.URL.IsAbs()

このチェックは、2 つのシナリオを区別し、それに応じてコード ロジックをガイドするのに役立ちます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。