有没有办法在 Go HTTP 服务器中拦截错误的 HEAD 请求?这里的错误请求是发送带有 HEAD 请求的 JSON 有效负载。我将此称为“错误请求”,但是当我尝试通过curl 对正文发出 HEAD 请求时,我收到此错误。但是,Go 中不会发生日志记录。
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
log.Println(r.Method, r.URL)
_, _ = fmt.Fprintf(w, "Hello")
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
如果我发送不带正文的curl 请求,它将按预期工作并生成日志条目2019/11/28 10:58:59 HEAD /。
$ curl -v -X HEAD http://localhost:8080
curl -i -X HEAD http://localhost:8080
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead.
HTTP/1.1 200 OK
Date: Thu, 28 Nov 2019 16:03:22 GMT
Content-Length: 5
Content-Type: text/plain; charset=utf-8
但是,如果我发送带有正文的curl 请求,则会收到“错误请求”状态,但不会更新任何日志。
$ curl -i -X HEAD http://localhost:8080 -d '{}'
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead.
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Connection: close
400 Bad Request
我想捕获此错误,以便可以发回我自己的自定义错误消息。我怎样才能拦截这个?
POPMUISE
相关分类