Bagaimana cara mengatur header di http mendapatkan permintaan?

152

Saya sedang melakukan GET http sederhana di Go:

client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
res, _ := client.Do(req)

Tapi saya tidak dapat menemukan cara untuk menyesuaikan header permintaan di dokumen , terima kasih

wong2
sumber

Jawaban:

233

The Headerbidang Permintaan adalah publik. Anda dapat melakukan ini:

req.Header.Set("name", "value")
Denys Séguret
sumber
38

Perhatikan bahwa di http.Request header "Host" tidak dapat diatur melalui Setmetode

req.Header.Set("Host", "domain.tld")

tetapi dapat diatur langsung:

req.Host = "domain.tld":

req, err := http.NewRequest("GET", "http://10.0.0.1/", nil)
if err != nil {
    ...
}

req.Host = "domain.tld"
client := &http.Client{}
resp, err := client.Do(req)
Oleg Neumyvakin
sumber
2

Paket net / http Go memiliki banyak fungsi yang berhubungan dengan header . Di antara mereka adalah metode Tambahkan , Del , Dapatkan dan Set . Cara menggunakan Set adalah:

func yourHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("header_name", "header_value")
}
Salvador Dali
sumber
7
tipe apa w?
Eswar Yaganti
@ EswarYaganti bagaimana Anda mengirim header? Anda mendapatkan r *http.Requestdan mengembalikan sesuatu w http.ResponseWriter. Jadi mungkin karena Anda mengembalikan tajuk, Anda harus menulisnya di penulis respons. Dan wmerupakan penulis respons. Apakah ini terlihat logis untuk Anda?
Salvador Dali
3
Poster asli mengatakan dia ingin "menyesuaikan header permintaan ". Contoh Anda mengkustomisasi tajuk respons .
Martin Del Vecchio