Go Web 伺服器:POST 請求上的神秘重定向
向特定URL (/myurl) 發出POST 請求時,開發人員遇到意外情況行為:請求未直接到達伺服器。相反,會收到 301 重定向回應,然後是由伺服器處理的輔助 GET 請求。
調查伺服器程式碼後,發現「/myurl/」路徑的處理程序是透過以下方式註冊的:http.HandleFunc("/myurl/", PHandler).然而,當瀏覽器發出POST 請求時,它會定向到“/myurl”(不含尾部斜線)。
理解這個問題的關鍵在於 Go 中 http 套件的預設行為。根據 http.ServeMux 類型的文檔,如果請求到達時沒有尾部斜杠,則註冊路徑上的尾部斜杠將觸發重定向。這是為了確保請求被路由到適當的處理程序。
在這種情況下,由於處理程序是為“/myurl/”註冊的,瀏覽器對“/myurl”的請求不帶尾部斜杠,結果是重定向到帶有尾部斜杠的“/myurl/”。這解釋了請求永遠不會直接到達伺服器的現象。
要解決此問題,開發人員有多種選擇:
透過實作這些解決方案之一,開發人員可以消除意外的重定向行為並確保他們的 Go Web 伺服器能如預期處理 POST 請求。
以上是為什麼我的 Go Web 伺服器會將 POST 請求重定向到 `/myurl` 到 `/myurl/`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!