利用Go HTTP 用戶端停用自動重新導向
在Go 程式設計中,建置RESTful API 用戶端時處理HTTP 重新導向至關重要。然而,在某些情況下,自動重定向處理是不受歡迎的。此問題探討了一種防止 Go HTTP 用戶端自動追蹤重新導向的替代方法。
問題中提供的初始解決方案突出顯示了 CheckRedirect 函數的自訂實現,強制將 HTTP 重定向視為錯誤。雖然技術上有效,但將重定向歸類為失敗感覺不自然。
為了解決這個問題,答案提出了一個更優雅的解決方案:修改 CheckRedirect 函數以傳回 http.ErrUseLastResponse。這向 HTTP 套件發出信號,表示不應遵循重定向,而不觸發錯誤處理。
以下是更新後的程式碼:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
透過此修改,HTTP 用戶端將忽略重新導向並傳回最新的回應,其主體仍可存取。原始碼中的註解闡明了:
作為一種特殊情況,如果 CheckRedirect 傳回 ErrUseLastResponse,則傳回最新的回應,其正文未關閉,並帶有 nil 錯誤。
作為因此,您可以在腳本中手動處理重定向,從而提供更大的靈活性和對 HTTP 工作流程的控制。透過利用此技術,您可以與返回重定向的 REST API 進行交互,同時保持所需的自訂等級。
以上是如何防止 Go 的 HTTP 用戶端自動跟隨重定向?的詳細內容。更多資訊請關注PHP中文網其他相關文章!