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中文網其他相關文章!