Mengapa Pengesahan HTTP Asas Gagal Masuk Apabila Ubah Hala Berlaku?

Mary-Kate Olsen
Lepaskan: 2024-11-21 04:46:17
asal
327 orang telah melayarinya

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan