首頁 >後端開發 >Golang >為什麼我的 Go Web 伺服器會將 POST 請求重定向到 `/myurl` 到 `/myurl/`?

為什麼我的 Go Web 伺服器會將 POST 請求重定向到 `/myurl` 到 `/myurl/`?

DDD
DDD原創
2024-11-22 22:38:24761瀏覽

Why Does My Go Web Server Redirect POST Requests to `/myurl` to `/myurl/`?

Go Web 伺服器:POST 請求上的神秘重定向

向特定URL (/myurl) 發出POST 請求時,開發人員遇到意外情況行為:請求未直接到達伺服器。相反,會收到 301 重定向回應,然後是由伺服器處理的輔助 GET 請求。

調查伺服器程式碼後,發現「/myurl/」路徑的處理程序是透過以下方式註冊的:http.HandleFunc("/myurl/", PHandler).然而,當瀏覽器發出POST 請求時,它會定向到“/myurl”(不含尾部斜線)。

理解這個問題的關鍵在於 Go 中 http 套件的預設行為。根據 http.ServeMux 類型的文檔,如果請求到達時沒有尾部斜杠,則註冊路徑上的尾部斜杠將觸發重定向。這是為了確保請求被路由到適當的處理程序。

在這種情況下,由於處理程序是為“/myurl/”註冊的,瀏覽器對“/myurl”的請求不帶尾部斜杠,結果是重定向到帶有尾部斜杠的“/myurl/”。這解釋了請求永遠不會直接到達伺服器的現象。

要解決此問題,開發人員有多種選擇:

  1. 使用尾部斜線將瀏覽器定向到正確的路徑" /myurl/".
  2. 僅註冊特定路徑的處理程序,不含尾部斜杠,例如http.HandleFunc("/myurl", PHandler)。
  3. 為兩個路徑註冊處理程序,允許有或沒有尾部斜線的請求。

透過實作這些解決方案之一,開發人員可以消除意外的重定向行為並確保他們的 Go Web 伺服器能如預期處理 POST 請求。

以上是為什麼我的 Go Web 伺服器會將 POST 請求重定向到 `/myurl` 到 `/myurl/`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn