ホームページ >バックエンド開発 >Golang >Go の HTTP クライアントが自動的にリダイレクトに従わないようにするにはどうすればよいですか?

Go の HTTP クライアントが自動的にリダイレクトに従わないようにするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-04 01:53:39855ブラウズ

How Can I Prevent Go's HTTP Client from Automatically Following Redirects?

Go HTTP クライアントを利用して自動リダイレクトを無効にする

Go プログラミングでは、RESTful API クライアントを構築するときに HTTP リダイレクトを処理することが不可欠です。ただし、自動リダイレクト処理が望ましくないシナリオもあります。この質問では、Go HTTP クライアントが自動的にリダイレクトに従わないようにするための代替アプローチを検討します。

質問で提供される最初の解決策では、CheckRedirect 関数のカスタム実装が強調表示され、HTTP リダイレクトがエラーとして扱われるようになります。技術的には効果的ですが、リダイレクトを失敗として分類するのは不自然に感じられます。

この問題に対処するために、回答では、http.ErrUseLastResponse を返すように CheckRedirect 関数を変更するという、より洗練された解決策が示されています。これは、エラー処理をトリガーせずに、リダイレクトに従わないことを HTTP パッケージに通知します。

更新されたコードは次のとおりです。

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}

この変更により、HTTP クライアントはリダイレクトを無視し、ボディがまだアクセス可能な状態で最新の応答を返します。ソース コード内のコメントは次のことを明確にしています。

特別なケースとして、CheckRedirect が ErrUseLastResponse を返す場合、最新の応答は本体が閉じられていない状態で nil エラーとともに返されます。

As aその結果、スクリプト内でリダイレクトを手動で処理できるようになり、HTTP ワークフローの柔軟性と制御が向上します。この手法を活用すると、必要なレベルのカスタマイズを維持しながら、リダイレクトを返す REST API を操作できます。

以上がGo の HTTP クライアントが自動的にリダイレクトに従わないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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