Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Meniru Lokasi Berasaskan Kuki cURL Mengikuti dalam Go?

Bagaimana untuk Meniru Lokasi Berasaskan Kuki cURL Mengikuti dalam Go?

DDD
DDDasal
2024-11-05 07:26:02372semak imbas

How to Emulate cURL's Cookie-Based Location Following in Go?

Meniru Lokasi berasaskan Kuki CURL Mengikuti dalam Go

Masalah:

Apabila menerima ubah hala (kod HTTP 302) dengan kuki yang disertakan dalam jawapan, bagaimanakah pelanggan Go boleh mengikuti lokasi baharu sambil menggunakan kuki yang diterima?

Jawapan:

Dalam Go 1.1 dan yang lebih baru, net/http/cookiejar package menyediakan penyelesaian untuk ini:

<code class="go">import (
    "golang.org/x/net/publicsuffix"
    "io/ioutil"
    "log"
    "net/http"
    "net/http/cookiejar"
)

func main() {
    options := cookiejar.Options{
        PublicSuffixList: publicsuffix.List,
    }
    jar, err := cookiejar.New(&options)
    if err != nil {
        log.Fatal(err)
    }
    client := http.Client{Jar: jar}
    resp, err := client.Get("http://dubbelboer.com/302cookie.php")
    if err != nil {
        log.Fatal(err)
    }
    data, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    if err != nil {
        log.Fatal(err)
    }
    log.Println(string(data))
}</code>

Coretan kod ini secara berkesan meniru lokasi berasaskan kuki CURL mengikut gelagat dengan mencipta balang kuki (jar) yang menyimpan kuki yang diterima. Apabila pelanggan mengikuti ubah hala, ia menghantar kuki yang disimpan bersama-sama dengan permintaan, membenarkannya mengakses lokasi baharu dengan kebenaran yang sesuai.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Lokasi Berasaskan Kuki cURL Mengikuti dalam Go?. 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