Go での基本 HTTP 認証: リダイレクトの問題の解決
提供されたコードを使用して Go で基本 HTTP 認証を試行すると、開発者はエラーが発生する可能性があります: "サポートされていないプロトコル スキーム ""。"このエラーは、リダイレクトの処理が原因である可能性があります。
注意点と解決策
Web サイトがリダイレクトを実行するときに、微妙な問題が発生します。 Go では、リダイレクト中に、元のリクエストで指定されたカスタム ヘッダーが失われます。これに対処するには、カスタム リダイレクト関数を定義してヘッダーを復元する必要があります。
カスタム リダイレクト関数を使用して更新されたコード
次のコード スニペットは、以下を含む更新されたスクリプトを示しています。リダイレクト関数:
func basicAuth(username, password string) string { auth := username + ":" + password return base64.StdEncoding.EncodeToString([]byte(auth)) } func redirectPolicyFunc(req *http.Request, via []*http.Request) error{ req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) return nil } func main() { client := &http.Client{ Jar: cookieJar, CheckRedirect: redirectPolicyFunc, } req, err := http.NewRequest("GET", "http://localhost/", nil) req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) resp, err := client.Do(req) }
この変更により、カスタム リダイレクト関数により、後続のリダイレクト リクエストに認証ヘッダーが追加され、エラーが解決され、HTTP 認証が有効になります。
以上がGo での基本 HTTP 認証中の「サポートされていないプロトコル スキーム」エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。