我正在向基於https的API發送請求。 在Chrome中輸入請求網址時,一切正常。當進行使用net/http
包在走同樣的要求,我得到有關失蹤的子域的錯誤:獲取正在發送的HTTP請求正文
"error": {
"type": "ApiUnknown",
"message": "No api specified (via subdomain)"
}
我認爲Chrome和圍棋不知何故將略有不同的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
User-Agent:Go 1.1包http
遊樂場:http://play.golang.org/p/Oku0O1yiBt
但我不知道在發送之前的請求,或者這其實是所有有交通是否增加了一些。
發送請求時可以設置額外的標頭(例如,如果在URL中有基本授權證書,在重定向等情況下有Referer,則爲授權)。你還沒有真正提供很多關於你的服務器爲什麼拒絕你的請求的信息。 –
@JamesHenstridge:是的,我認爲可能是這樣。不,我沒有提供很多信息,因爲我真的不知道。這就是爲什麼我想看到實際的請求主體。我使用完全相同的'urlStr'並將其粘貼到同一臺計算機上的Chrome中,並得到不同的響應。我添加了Go http請求給我的實際響應。 – ANisus
我可能會補充一點,雖然urlStr不是實際的url(好吧,呵呵),但它具有相同的結構。它甚至在'api-name'中有一個破折號,所以有一段時間我以爲Go可能會用URL編碼破折號,但事實並非如此。 – ANisus