Melumpuhkan Ubah Hala Automatik dalam Klien HTTP Go
Klien HTTP Go secara automatik mengikut ubah hala HTTP apabila titik akhir API mengembalikan ubah hala HTTP 302 dengan Pengepala Lokasi HTTP. Tingkah laku ini mungkin tidak diingini dalam senario tertentu, seperti apabila anda perlu menangkap pengepala Lokasi HTTP untuk pemprosesan kemudian.
Pendekatan biasa untuk melumpuhkan ubah hala automatik melibatkan mengatasi fungsi CheckRedirect pelanggan. Walau bagaimanapun, penyelesaian ini mungkin kelihatan seperti penggodaman kerana ia menganggap ubah hala HTTP sebagai ralat, yang mana ia tidak.
Penyelesaian yang lebih elegan ialah menggunakan http.Transport untuk mengkonfigurasi tingkah laku pelanggan:
import ( "net/http" ) // Create a custom round-trip transport transport := &http.Transport{ DisableKeepAlives: true, } // Create an HTTP client with the custom transport client := &http.Client{ Transport: transport, }
Dalam persediaan ini, medan DisableKeepAlives ditetapkan kepada benar yang menghalang pelanggan daripada mengekalkan sambungan berterusan, mengelakkan keperluan untuk memintas ubah hala.
Sebagai alternatif, anda boleh menggunakan kod berikut untuk melumpuhkan ubah hala secara eksplisit:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
Dengan kod ini, pakej HTTP secara automatik mengiktiraf bahawa ubah hala tidak harus diikuti, tetapi tidak membuang sebarang kesilapan. Ini membolehkan anda membuat permintaan HTTP dengan Pengesahan Asas sambil melumpuhkan ubah hala automatik tanpa menggunakan pengendalian ralat yang rumit.
Atas ialah kandungan terperinci Bagaimana untuk Melumpuhkan Ubah hala Automatik dalam Klien HTTP Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!