如果他输入错误的密码,我想向用户发送警报,并在他输入密码时将其返回到页面。我是这样做的
func sendJSONHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
http.ServeFile(w, r, "template/api/api.html")
} else if r.Method == "POST" {
r.ParseForm()
if r.Form["password"][0] == "apiPassword" {
j := struct {
Proxies []string
}{Proxies: code.UP.Proxy}
w.Header().Set("Access-Control-Allow-Origin", corsAddrSite)
json.NewEncoder(w).Encode(j)
} else {
// here is a problem
fmt.Fprintln(w, "<script>alert('Wrong Password')</script>")
http.ServeFile(w, r, "template/api/api.html")
}
}
}
但是我得到了 http: multiple response.WriteHeader calls
错误。
怎样做才是对的?
最佳答案
根据 HTTP 规范,您不能多次写入 http.ResponseWriter。
来自 go 文档 https://golang.org/pkg/net/http/#ResponseWriter
要解决您的问题,您可以在模板文件中添加脚本标签,或者制作一个新模板。您还可以通过在发送之前添加警报脚本来定制响应。也许使用模板文件。
然而,解决此问题的正确方法可能是在实际提供的 html 中包含更多逻辑,前端应根据状态代码或响应正文显示响应。
关于转到 http 响应几个 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891697/