第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何攔截錯(cuò)誤的http HEAD請(qǐng)求

如何攔截錯(cuò)誤的http HEAD請(qǐng)求

Go
慕田峪7331174 2023-08-07 15:10:39
有沒有辦法在 Go HTTP 服務(wù)器中攔截錯(cuò)誤的 HEAD 請(qǐng)求?這里的錯(cuò)誤請(qǐng)求是發(fā)送帶有 HEAD 請(qǐng)求的 JSON 有效負(fù)載。我將此稱為“錯(cuò)誤請(qǐng)求”,但是當(dāng)我嘗試通過curl 對(duì)正文發(fā)出 HEAD 請(qǐng)求時(shí),我收到此錯(cuò)誤。但是,Go 中不會(huì)發(fā)生日志記錄。package mainimport (    "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))}如果我發(fā)送不帶正文的curl 請(qǐng)求,它將按預(yù)期工作并生成日志條目2019/11/28 10:58:59 HEAD /。$ curl -v -X HEAD  http://localhost:8080curl -i -X HEAD  http://localhost:8080Warning: Setting custom HTTP method to HEAD with -X/--request may not work theWarning: way you want. Consider using -I/--head instead.HTTP/1.1 200 OKDate: Thu, 28 Nov 2019 16:03:22 GMTContent-Length: 5Content-Type: text/plain; charset=utf-8但是,如果我發(fā)送帶有正文的curl 請(qǐng)求,則會(huì)收到“錯(cuò)誤請(qǐng)求”狀態(tài),但不會(huì)更新任何日志。$ curl -i -X HEAD  http://localhost:8080 -d '{}'Warning: Setting custom HTTP method to HEAD with -X/--request may not work theWarning: way you want. Consider using -I/--head instead.HTTP/1.1 400 Bad RequestContent-Type: text/plain; charset=utf-8Connection: close400 Bad Request我想捕獲此錯(cuò)誤,以便可以發(fā)回我自己的自定義錯(cuò)誤消息。我怎樣才能攔截這個(gè)?
查看完整描述

1 回答

?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊

你不能。標(biāo)準(zhǔn)庫的 HTTP 服務(wù)器不為這種情況提供任何攔截點(diǎn)或回調(diào)。


在調(diào)用處理程序之前,無效請(qǐng)求將被“終止”。server.go您可以在,方法中看到這conn.serve()一點(diǎn):


? ? w, err := c.readRequest(ctx)

? ? // ...

? ? if err != nil {

? ? ? ? switch {

? ? ? ? // ...

? ? ? ? default:

? ? ? ? ? ? publicErr := "400 Bad Request"

? ? ? ? ? ? if v, ok := err.(badRequestError); ok {

? ? ? ? ? ? ? ? publicErr = publicErr + ": " + string(v)

? ? ? ? ? ? }


? ? ? ? ? ? fmt.Fprintf(c.rwc, "HTTP/1.1 "+publicErr+errorHeaders+publicErr)

? ? ? ? ? ? return

? ? ? ? }

? ? }

? ? // ...

? ? serverHandler{c.server}.ServeHTTP(w, w.req)

你不能。標(biāo)準(zhǔn)庫的 HTTP 服務(wù)器不為這種情況提供任何攔截點(diǎn)或回調(diào)。


在調(diào)用處理程序之前,無效請(qǐng)求將被“終止”。server.go您可以在,方法中看到這conn.serve()一點(diǎn):


? ? w, err := c.readRequest(ctx)

? ? // ...

? ? if err != nil {

? ? ? ? switch {

? ? ? ? // ...

? ? ? ? default:

? ? ? ? ? ? publicErr := "400 Bad Request"

? ? ? ? ? ? if v, ok := err.(badRequestError); ok {

? ? ? ? ? ? ? ? publicErr = publicErr + ": " + string(v)

? ? ? ? ? ? }


? ? ? ? ? ? fmt.Fprintf(c.rwc, "HTTP/1.1 "+publicErr+errorHeaders+publicErr)

? ? ? ? ? ? return

? ? ? ? }

? ? }

? ? // ...

? ? serverHandler{c.server}.ServeHTTP(w, w.req)

Go 的 HTTP 服務(wù)器為您提供了一個(gè)實(shí)現(xiàn)來處理來自使用/遵守HTTP 協(xié)議的客戶端的傳入請(qǐng)求。所有瀏覽器和著名的客戶端都遵循 HTTP 協(xié)議。提供完全可定制的服務(wù)器并不是實(shí)現(xiàn)的目標(biāo)。



查看完整回答
反對(duì) 回復(fù) 2023-08-07
  • 1 回答
  • 0 關(guān)注
  • 197 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)