2016-10-11 4 views
1

Я строю 2 apis. Один запрос на другой.Golang неверный http resquest header

Чтобы вызвать api, который получает запросы, нам нужно передать заголовок X-Token. Я делаю это с Golang

client := &http.Client{ 
    Transport: &http.Transport{ 
     TLSClientConfig: &tls.Config{ 
      InsecureSkipVerify: true, 
     }, 
    }, 
} 

req, err := http.NewRequest("GET", "https://localhost:8086/v2/example", nil) 
if err != nil { 
    c.JSON(http.StatusInternalServerError, gin.H{"Error": err.Error()}) 
} 
req.Header.Add("accept", "application/json") 
req.Header.Add("content-type", "application/json") 
req.Header.Add("x-token", "a2e63ee01401aaeca78be023dfbb8c59") 

resp, err := client.Do(req) 

В других API, я получаю заголовок HTTP с gin так:

token := c.Request.Header.Get("x-token")

Я не знаю, почему мой заголовок приходит с другим значением и нет X-Токен. Благодаря!

Результат fmt.Printf("%+v", c.Request.Header):

map[User-Agent:[Go-http-client/1.1] Referer:[https://localhost:8086/v2/example] Accept-Encoding:[gzip]] 

Я не знаю, где мои х-токенов, принимать и типа содержимого заголовки ....

ВАЖНО

  • Если i сделайте запрос с x-token заголовок Postman для запрошенного API. Я получаю правильный заголовок.
  • Если я изменить адрес запроса на API, что делает запросы, например httpbin, я получаю правильный заголовок тоже ....
+1

Каков результат работы fmt.Println (c.Request.Header)? – Apin

+0

@Apin Я редактировал вопрос! :) – tiagopotencia

ответ

1

Helo, ребята! я нашел решение ....

Я не знаю, почему до сих пор ... но я думаю, что golang не обрабатывают не трейлинг не слэш URL, ....

https://localhost:8086/v2/example
отличается от
https://localhost:8086/v2/example/

Это была моя проблема ....

Я просто скопировать и мимо golang сгенерированный код почтальона ... и это был «большой» разница ....

Thanks mr. Почтальон ...