首页 > 后端开发 > Golang > 正文

为什么我的 Go Web 服务器将 POST 请求重定向到 `/myurl` 到 `/myurl/`?

DDD
发布: 2024-11-22 22:38:24
原创
706 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板