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 请求。
要解决此问题,请考虑以下解决方案:
请记住,浏览器通常不会在重定向后重复 POST 请求,以保护敏感数据的安全性。
以上是为什么 My Go Web 服务器将 POST 请求重定向为 GET?的详细内容。更多信息请关注PHP中文网其他相关文章!