簡體   English   中英

為什么Go http.Client中的POST請求不遵循301重定向?

[英]Why do POST request in the Go http.Client not follow 301 redirects?

我正在使用Go構建測試工具。 該工具可以通過對端點執行POST請求來獲取特定的URL,該端點將返回帶有測試Location的303。 有時,此位置本身也以301重定向,我也想遵循。

Test tool -> POST /get-url-to-test -> 303 Location: /other -> GET /other -> 301 Location: /new-other (stops here because initial request is POST)

正如我們在Go的源代碼(第241至257行)中所看到的那樣,似乎GET請求遵循301重定向,而不是POST請求: http : //golang.org/src/net/http/client.go

這是為什么? 這是HTTP規范的一部分嗎? 這是Go社區做出的決定嗎?

我問的原因是因為就我而言,我必須手動執行一個新的GET請求才能到達/other重定向到的URL。


編輯1:之前我犯了一個錯誤:Go通過GET請求獲取了/other資源。 但是由於返回了301並且初始請求是POST,所以Go停止了在301上的重定向。這似乎很奇怪。 我想念什么嗎?

編輯2:這可能是一個錯誤,我在Github上打開了一個問題: https : //github.com/golang/go/issues/9348

HTTP RFC 2616說:

10.3重定向3xx

此類狀態碼表示用戶代理需要采取進一步的措施才能滿足請求。 當且僅當第二個請求中使用的方法是GET或HEAD時,才可以由用戶代理執行所需的操作,而無需與用戶進行交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM