http get 요청에서 헤더를 설정하는 방법은 무엇입니까?


152

Go에서 간단한 http GET을하고 있습니다.

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

하지만 난에 요청 헤더 사용자 정의 할 수있는 방법을 찾을 수없는 문서를 , 감사합니다

답변:


233

Header요청의 필드는 public입니다. 당신은 이것을 할 수 있습니다 :

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

38

http.Request 헤더에서 "Host"는 Set메소드 를 통해 설정할 수 없습니다.

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

그러나 직접 설정할 수 있습니다 :

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

Go의 net / http 패키지에는 headers를 다루는 많은 기능이 있습니다 . 그중에는 Add , Del , GetSet 메소드가 있습니다. Set을 사용하는 방법은 다음과 같습니다.

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

7
w는 어떤 타입입니까?
Eswar Yaganti

@EswarYaganti 헤더를 어떻게 보내십니까? 당신은를 얻고에 r *http.Request무언가를 돌려줍니다 w http.ResponseWriter. 따라서 헤더를 반환하므로 응답 기록기에 헤더를 작성해야합니다. 그리고 w응답 작가입니다. 이것이 당신에게 논리적으로 보입니까?
살바도르 달리

3
원래 포스터는 " 요청 헤더를 사용자 정의하고 싶다"고 말했다 . 이 예에서는 응답 헤더 를 사용자 정의합니다 .
Martin Del Vecchio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.