首頁 >後端開發 >Golang >為什麼 My Go Web 伺服器將 POST 請求重定向為 GET?

為什麼 My Go Web 伺服器將 POST 請求重定向為 GET?

Susan Sarandon
Susan Sarandon原創
2024-11-28 02:13:12565瀏覽

Why is My Go Web Server Redirecting POST Requests to GET?

Go Web 伺服器自動重新導向POST 要求

許多開發者都遇到Go Web 伺服器自動重新導向POST 要求的問題,導致意外行為。當伺服器收到針對特定 URL 的 POST 請求但回應 301(永久移動)狀態代碼,觸發對不同 URL 的後續 GET 請求時,就會出現這種現象。

要了解根本原因,至關重要深入研究 Go 的 http.ServeMux 類型的行為。預設情況下,如果請求在 URL 中包含尾部斜杠,ServeMux 會自動將請求重定向到子樹的根。例如,如果為「/myurl/」註冊了處理程序,則任何對「/myurl」(不含尾部斜線)的請求都將被重定向到「/myurl/」。

在提供的範例中, PHandler 被註冊來處理對「/myurl/」的請求。但是,用戶的瀏覽器被定向到“/myurl”,而沒有尾部斜線。因此,ServeMux 會偵測到此差異,並向正確的 URL 發出 301 重定向,有效地將 POST 請求轉換為 GET 請求。

要解決此問題,請考慮以下解決方案:

  • 確保您的瀏覽器存取的 URL 與處理程序的註冊路徑相符。在這種情況下,請將瀏覽器定向到“/myurl/”而不是“/myurl”。
  • 如果您不需要子樹處理程序,但只需要特定路徑的處理程序,請僅為該路徑註冊處理程序不帶尾部斜杠的路徑,例如“http.HandleFunc("/myurl" , PHandler)」。
  • 將兩個路徑註冊到處理程序以處理「/myurl」和「/myurl/」。使用函數“http.HandleFunc("/myurl/", PHandler)”。

請記住,瀏覽器通常不會在重定向後重複 POST 請求,以保護敏感資料的安全性。

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

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