Go 基本認証で「サポートされていないプロトコル スキーム ''」エラーを修正する方法?

Barbara Streisand
リリース: 2024-11-24 03:24:10
オリジナル
916 人が閲覧しました

How to Fix

Go での HTTP 基本認証: 一般的なエラーのトラブルシューティング

提供されたコードを使用して基本 HTTP 認証を実装しようとすると、エラーが発生します。 「サポートされていないプロトコル スキーム」。これは、リクエスト オブジェクトの作成時のコードの見落としに遡る可能性があります。

このエラーに対処するには、リクエスト URL で正しいスキームが指定されていることを確認してください。この例では、プロトコル スキームを指定せずに「mydomain.example」へのリクエストを行おうとするため、エラーが発生します。

これを修正するには、コードを変更して、次のように HTTPS スキームを明示的に指定します。

req, err := http.NewRequest("GET", "https://mydomain.example", nil)
ログイン後にコピー

さらに、Go の HTTP クライアントはリダイレクトを処理するときに別の問題が発生する可能性があることに注意してください。デフォルトでは、クライアントはリダイレクト中に Basic Authorization ヘッダーを含むカスタム ヘッダーを保持しません。

この動作を回避するには、リダイレクト中に Authorization ヘッダーを明示的に追加するカスタム リダイレクト ポリシー関数を定義できます。これにより、リダイレクト プロセス全体を通じて認証資格情報が確実に保持されます。

カスタム リダイレクト ポリシー関数の例を次に示します。

func redirectPolicyFunc(req *http.Request, via []*http.Request) error {
  req.Header.Add("Authorization", "Basic " + basicAuth(username, password))
  return nil
}
ログイン後にコピー

HTTP クライアントでこのカスタム ポリシーを採用することで、 Basic Authorization ヘッダーがリダイレクト中に適切に処理され、シームレスな認証が可能になること。

以上がGo 基本認証で「サポートされていないプロトコル スキーム ''」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート