Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pengesahan HTTP Asas Gagal Masuk Apabila Ubah Hala Berlaku?

Mengapa Pengesahan HTTP Asas Gagal Masuk Apabila Ubah Hala Berlaku?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-21 04:46:17328semak imbas

Why Does Basic HTTP Authentication Fail in Go When Redirects Occur?

Pengendalian Pengesahan HTTP Asas dalam Go

Apabila melaksanakan pengesahan HTTP asas dalam Go, beberapa cabaran yang tidak dijangka mungkin timbul. Artikel ini membincangkan isu biasa yang dihadapi semasa cuba melaksanakan pengesahan HTTP asas.

Isu: Ralat menyatakan "skim protokol tidak disokong" ditemui semasa melaksanakan kod berikut:

func basicAuth() string {
    var username string = "foo"
    var passwd string = "bar"
    client := &http.Client{}
    req, err := http.NewRequest("GET", "mydomain.example", nil)
    req.SetBasicAuth(username, passwd)
    resp, err := client.Do(req)
    if err != nil{
        log.Fatal(err)
    }
    bodyText, err := ioutil.ReadAll(resp.Body)
    s := string(bodyText)
    return s
}

Punca: Apabila ubah hala berlaku, Go-lang membuang mana-mana pengepala yang ditentukan, termasuk pengepala Kebenaran yang ditetapkan untuk pengesahan asas.

Penyelesaian: Untuk membetulkan isu ini, fungsi dasar ubah hala tersuai boleh dilaksanakan:

func redirectPolicyFunc(req *http.Request, via []*http.Request) error {
    req.Header.Add("Authorization", "Basic "+basicAuth("username1", "password123"))
    return nil
}

Ini fungsi memastikan bahawa pengepala Kebenaran ditambahkan semula semasa ubah hala, dengan berkesan mengekalkan pengesahan kelayakan.

Pelaksanaan:

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)
}

Dengan menggunakan fungsi dasar ubah hala, pengepala yang ditentukan, termasuk pengepala Kebenaran untuk pengesahan asas, akan berterusan sepanjang ubah hala, memastikan pengesahan berjaya dengan pelayan sasaran.

Atas ialah kandungan terperinci Mengapa Pengesahan HTTP Asas Gagal Masuk Apabila Ubah Hala Berlaku?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn