Go HTTP 認証が「サポートされていないプロトコル スキーム ''」で失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-11-21 11:02:11
オリジナル
187 人が閲覧しました

Why Does Go HTTP Authentication Fail with

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

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