Làm cách nào để đặt tiêu đề trong http nhận yêu cầu?


152

Tôi đang thực hiện một http GET đơn giản trong Go:

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

Nhưng tôi không thể tìm thấy một cách để tùy chỉnh tiêu đề yêu cầu trong tài liệu , cảm ơn

Câu trả lời:


233

Các Headerlĩnh vực Yêu cầu là công khai. Bạn có thể làm điều này:

req.Header.Set("name", "value")

38

Hãy chú ý rằng không thể đặt tiêu đề "Máy chủ" trong http.Request thông qua Setphương thức

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

nhưng có thể được đặt trực tiếp:

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)

2

Gói net / http của Go có nhiều chức năng xử lý các tiêu đề . Trong số đó có các phương thức Add , Del , GetSet . Cách sử dụng Set là:

func yourHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("header_name", "header_value")
}

7
loại gì
Eswar Yaganti

@EswarYaganti bạn gửi tiêu đề như thế nào? Bạn nhận được một r *http.Requestvà trả lại một cái gì đó trong w http.ResponseWriter. Vì vậy, có lẽ bởi vì bạn đang trả lại tiêu đề, bạn cần phải viết chúng trong một nhà văn phản hồi. Và wlà một nhà văn phản ứng. Điều này có vẻ hợp lý với bạn?
Salvador Dali

3
Người đăng ban đầu cho biết anh muốn "tùy chỉnh tiêu đề yêu cầu ". Ví dụ của bạn tùy chỉnh tiêu đề phản hồi .
Martin Del Vecchio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.