如果在http.HandlerFunc函数内发生紧急情况,则不会将其发送到客户端http状态代码。为什么会这样,如何避免呢?因为当JavaScript XMLHttpRequest没有收到http状态代码时,它不能很好地工作。
在http响应没有状态且没有正文内容的情况下,我们如何编写ajax请求?
func main() {
var counter int
http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
if counter%2 == 0 {
counter++
writer.Write([]byte(time.Now().String()))
} else {
counter++
panic(":(")
}
})
err := http.ListenAndServe(":9999", nil)
if err != nil {
panic(err)
}
}
答案 0 :(得分:2)
在这种情况下,您不应该惊慌。恐慌将导致运行您的处理程序函数的当前go例程退出,而不会在响应中写入任何您不想要的内容,而是使用WriteHeader
方法返回错误代码:
func main() {
var counter int
http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
if counter%2 == 0 {
counter++
writer.Write([]byte(time.Now().String()))
} else {
counter++
writer.WriteHeader(http.StatusInternalServerError)
}
})
err := http.ListenAndServe(":9999", nil)
if err != nil {
panic(err)
}
}