ホームページ >バックエンド開発 >Golang >Go HTTP クライアントで自動リダイレクトを無効にする方法は?

Go HTTP クライアントで自動リダイレクトを無効にする方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 05:42:44526ブラウズ

How to Disable Automatic Redirects in the Go HTTP Client?

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

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