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中文网其他相关文章!