https 기반 API에 요청하고 있습니다. Chrome에 요청 URL을 입력하면 모든 것이 정상적으로 작동합니다. 나는 그 차이가 무엇인지 알 필요가 크롬을 가정하고 어떻게 든 약간 다른 HTTP 요청을 전송 이동 때문에HTTP 요청 본문을 보냅니다.
"error": {
"type": "ApiUnknown",
"message": "No api specified (via subdomain)"
}
: 이동에 net/http
패키지를 사용하여 동일한 요청을 수행 할 때, 나는없는 하위 도메인에 대한 오류를 얻을 수 .
Chrome에서는 개발자 도구를 사용하여 전송 된 요청을 볼 수 있습니다.
http
패키지에서 HTTP 요청 본문을 보내려면 어떻게해야합니까?
나는 다음과 같은 작업을 수행 할 수
package main
import (
"net/http"
"os"
)
func main() {
urlStr := "https://api-name.subdomain.domain.org/page?param=value"
//client := &http.Client{}
req, err := http.NewRequest("GET", urlStr, nil)
if err != nil {
panic(err)
}
req.Write(os.Stdout) // Will this output be equal to the one being sent to the server?
//resp, err := client.Do(req)
}
출력 :
GET/페이지 PARAM = 값 HTTP/1.1
호스트 : API-name.subdomain.domain. org
사용자 에이전트 : Go 1.1 패키지 http
놀이터 :http://play.golang.org/p/Oku0O1yiBt
하지만이 요청이 전송하거나,이 사실 인 경우 모두가 전에 전송 뭔가를 추가 여부를 모르겠습니다.
요청이 전송 될 때 추가 헤더가 설정 될 수 있습니다 (예 : URL에 기본 인증 자격 증명이있는 경우 '권한 부여', 리디렉션의 경우 '리퍼러'등). 서버가 요청을 거절하는 이유에 대해 많은 정보를 제공하지는 못했습니다. –
@JamesHenstridge : 네, 그렇다고 생각했습니다. 그리고 아는 것이 없기 때문에 많은 정보를 제공하지 않았습니다. 그래서 실제 요청 본문을보고 싶습니다. 나는 똑같은'urlStr'을 가져 와서 같은 컴퓨터에있는 크롬에 붙이고 다른 응답을 얻는다. Go http 요청이 제공하는 실제 응답을 추가했습니다. – ANisus
urlStr이 실제 URL (물론, duh)이 아니지만 동일한 구조를 가졌을 수도 있습니다. 그것은'api-name'에 대시 (dash)를 가지고있어서, 잠시 Go는 URL에 대시가 인코딩되어 있다고 생각했지만, 그렇지 않습니다. – ANisus