ホームページ >バックエンド開発 >Golang >Go での基本 HTTP 認証中の「サポートされていないプロトコル スキーム」エラーを解決する方法は?

Go での基本 HTTP 認証中の「サポートされていないプロトコル スキーム」エラーを解決する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-17 05:27:03396ブラウズ

How to Resolve

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

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