Go での基本 HTTP 認証: エラー コードの解決
Go で基本 HTTP 認証を試行すると、「サポートされていません」というエラー メッセージが表示される場合があります。プロトコル スキーム「」。コードを詳しく調べて、この問題が発生する理由を調べてみましょう。
問題のあるコードは次のとおりです。
func basicAuth() string { req, err := http.NewRequest("GET", "mydomain.example", nil)
エラーは、「http://」または「https:」が省略されているために発生します。 //" という接頭辞が URL に追加されます。これに対処するには、コードを次のように変更します。
func basicAuth() string { req, err := http.NewRequest("GET", "http://mydomain.example", nil)
指定した URL に正しいプロトコル スキーム ("http" または "https" が含まれていることを確認してください)。
追加の問題点: リダイレクト
リダイレクトに関連する潜在的な落とし穴に注意してください。 Go-lang は、リダイレクト中に指定されたヘッダーを破棄します。これを解決するには、ヘッダーを再追加するカスタム リダイレクト ポリシー関数を実装します:
func redirectPolicyFunc(req *http.Request, via []*http.Request) error{ req.Header.Add("Authorization","Basic " + basicAuth("username1","password123")) return nil }
カスタム リダイレクト ポリシーをクライアントに組み込みます:
client := &http.Client{ CheckRedirect: redirectPolicyFunc, }
これらの調整に従って、 Go で基本的な HTTP 認証を正常に実行し、認証ヘッダーを失うことなく潜在的なリダイレクトを処理できます。
以上がGo HTTP 認証が「サポートされていないプロトコル スキーム ''」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。