Go HTTP クライアントでの自動リダイレクトの無効化
API エンドポイントが HTTP 302 リダイレクトを返すと、Go HTTP クライアントは自動的に HTTP リダイレクトに従います。 HTTP ロケーションヘッダー。この動作は、後の処理のために HTTP Location ヘッダーをキャプチャする必要がある場合など、特定のシナリオでは望ましくない場合があります。
自動リダイレクトを無効にする一般的な方法には、クライアントの CheckRedirect 関数をオーバーライドすることが含まれます。ただし、このソリューションは HTTP リダイレクトをエラーとして扱うため、ハッキングのように感じるかもしれませんが、エラーではありません。
より洗練されたソリューションは、http.Transport を使用してクライアントの動作を設定することです。
import ( "net/http" ) // Create a custom round-trip transport transport := &http.Transport{ DisableKeepAlives: true, } // Create an HTTP client with the custom transport client := &http.Client{ Transport: transport, }
この設定では、DisableKeepAlives フィールドが true に設定されているため、クライアントは永続的な接続を維持できず、インターセプトの必要性が回避されます。
または、次のコードを使用してリダイレクトを明示的に無効にすることもできます。
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
このコードを使用すると、HTTP パッケージはリダイレクトに従わないことを自動的に認識しますが、リダイレクトはスローしませんあらゆるエラー。これにより、複雑なエラー処理に頼ることなく、自動リダイレクトを無効にしながら、Basic 認証を使用して HTTP リクエストを行うことができます。
以上がGo HTTP クライアントで自動リダイレクトを無効にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。