Golang-http.Redirect在处理程序中重定向失败,而不是处理post数据

Golang-http.Redirect在处理程序中重定向失败,而不是处理post数据,http,redirect,go,Http,Redirect,Go,我正在考虑为身份验证执行以下操作 (1) 比如说,客户回家 客户端显示一个带有用户名、密码和游戏代码的登录表单 (2) 当客户端提交此表单时,我使用javascript将数据发布到 它接受POST请求。在我的golang文件中,相关路线定义为: rtr := mux.NewRouter() rtr.HandleFunc("/login", loginHandler).Methods("POST") (3) 现在我想检查用户名、密码和游戏代码三者是否有效。我从游戏代码开始,读取提交的值并对照数据

我正在考虑为身份验证执行以下操作

(1) 比如说,客户回家 客户端显示一个带有用户名、密码和游戏代码的登录表单

(2) 当客户端提交此表单时,我使用javascript将数据发布到 它接受POST请求。在我的golang文件中,相关路线定义为:

rtr := mux.NewRouter()
rtr.HandleFunc("/login", loginHandler).Methods("POST")
(3) 现在我想检查用户名、密码和游戏代码三者是否有效。我从游戏代码开始,读取提交的值并对照数据库中的有效游戏代码列表进行签入没有困难。现在,如果游戏代码无效,我想将用户重定向到另一条路径。我没有这样做。以下是相关线路:

// I check if gamecode is valid. If it is invalid, gameCodeExists = 0
if gameCodeExists == 0 {
    // this message prints on the server as expected for an invalid code
    fmt.Println("gamecode invalid...")

    // this redirect never occurs
    http.Redirect(w, req, "/loginfail", 302)
    return
} else {
    fmt.Println("Valid code")
}
有人能帮我解决我做错了什么,以及我该如何解决它吗


谢谢。

处理程序中是否还有其他内容写入
w
?没有其他内容写入处理程序。这是我的另一个问题。在重定向之前我不能写一些东西吗?另外,我注意到,如果我使用
action=url
提交表单,那么重定向就起作用了。但是,如果我使用Ajax post提交它,那么它不会。当请求来自Ajax调用时,有没有一种方法可以使用重定向?谢谢。如果Ajax请求收到重定向,它不会将当前页面重定向到新页面。这里的方法是在javascript响应中捕获http请求,查看发送的http代码(301或3xx关于重定向),然后重定向到URL处理程序中是否还有其他内容写入
w
?没有其他内容写入处理程序。这是我的另一个问题。在重定向之前我不能写一些东西吗?另外,我注意到,如果我使用
action=url
提交表单,那么重定向就起作用了。但是,如果我使用Ajax post提交它,那么它不会。当请求来自Ajax调用时,有没有一种方法可以使用重定向?谢谢。如果Ajax请求收到重定向,它不会将当前页面重定向到新页面。方法是在javascript响应中捕获http请求,查看发送的http代码(301或3xx关于重定向),然后重定向到url