首頁  >  文章  >  後端開發  >  如何解決 Go 中基本 HTTP 驗證期間的「不支援的協定方案」錯誤?

如何解決 Go 中基本 HTTP 驗證期間的「不支援的協定方案」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-17 05:27:03310瀏覽

How to Resolve

Go 中的基本HTTP 驗證:解決重定向問題

使用提供的程式碼在Go 中嘗試基本HTTP 驗證時,開發人員可能會遇到以下錯誤:「不支援的協定方案「」。」此錯誤可能是由於重定向的處理造成的。

陷阱和解決方案

網站執行重定向時會出現微妙之處。在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn