You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST表单重定向后404但手动访问正常的Golang问题排查

问题原因分析

  1. 重定向路径解析错误
    你在http.Redirect中使用的目标地址是"success",这是相对路径。原请求路径是/process,浏览器会将该相对路径解析为/process/success,但你的路由并未注册这个路径,因此返回404错误。而手动输入/success是直接访问根路径下的路由,所以能正常返回200。

  2. 状态码设置冲突
    你先调用w.WriteHeader(303),随后又调用http.Redirect(..., http.StatusTemporaryRedirect)。http.Redirect会自动覆盖之前设置的响应头和状态码,且http.StatusTemporaryRedirect对应的是307状态码,这就是你收到307而非预期303的原因。307重定向会保留原POST请求方法,但即使success的POST路由存在,路径错误依然会导致404。

修复方案

  • 修正重定向路径:将目标地址改为绝对路径"/success",确保浏览器跳转到根路径下的正确路由。
  • 使用正确的状态码:若需要让浏览器用GET方法访问目标页面,应使用http.StatusSeeOther(对应303状态码),无需手动调用w.WriteHeader,http.Redirect会自动处理状态码。

修改后的processHandler代码:

func processHandler(w http.ResponseWriter, req *http.Request) {
    http.Redirect(w, req, "/success", http.StatusSeeOther)
}

另外,确保main函数末尾启动HTTP服务,添加以下代码:

log.Fatal(http.ListenAndServe(":3033", router))

内容的提问来源于stack exchange,提问作者pigfox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:50:22