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 サイトの他の関連記事を参照してください。