我正在 golang 中设置一个带有超时的简单服务器。当运行的处理程序花费的时间超过超时时间时,如果我使用 Firefox 请求,该请求将无限期地重复。但是,如果我使用 Postman 或curl,则 reuqest 不会重复。我想防止浏览器中出现重复循环。
我尝试手动关闭请求正文或检查上下文是否已取消,但是这些方法都不起作用。
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
fmt.Printf("Hello, you've requested: %s\n", r.URL.Path)
time.Sleep(time.Second * 2)
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})
s := http.Server{
Addr: ":8080",
Handler: http.DefaultServeMux,
ReadTimeout: 1 * time.Second,
WriteTimeout: 1 * time.Second,
}
s.ListenAndServe()
}
我希望处理程序退出并且不再重复。
大话西游666
相关分类