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

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

如何在 Go http 服務(wù)器中解析 http Get 請(qǐng)求正文?

如何在 Go http 服務(wù)器中解析 http Get 請(qǐng)求正文?

Go
蕪湖不蕪 2021-06-16 17:01:36
在 Go http 服務(wù)器中,我可以獲得 POST 請(qǐng)求正文。Go net/http 包似乎刪除了 GET 請(qǐng)求正文。我知道最好不要將http GET 與請(qǐng)求正文一起使用,但我需要使用請(qǐng)求正文處理 http GET。是否可以不更改標(biāo)準(zhǔn)庫?請(qǐng)幫忙,因?yàn)槲也幌胗?libevent 切換回 C!當(dāng)客戶端發(fā)送帶有請(qǐng)求正文的 POST 時(shí),下面的代碼將顯示正文內(nèi)容。但是當(dāng)客戶端發(fā)送帶有請(qǐng)求正文的 GET 時(shí),正文中沒有任何內(nèi)容。func handler(w http.ResponseWriter, r *http.Request) {    defer r.Body.Close()    body, _ := ioutil.ReadAll(r.Body)    log.Printf("body: %v", string(body))}func main() {    http.HandleFunc("/", handler)    http.ListenAndServe(":8080", nil)}
查看完整描述

1 回答

?
慕標(biāo)琳琳

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

大多數(shù)魔法發(fā)生在transfer.go. 這是我發(fā)現(xiàn)在fixLengthfunc中看起來相關(guān)的內(nèi)容:


if !isResponse && requestMethod == "GET" {

    // RFC 2616 doesn't explicitly permit nor forbid an

    // entity-body on a GET request so we permit one if

    // declared, but we default to 0 here (not -1 below)

    // if there's no mention of a body.

    return 0, nil

}

看起來,只要你的客戶結(jié)束一個(gè)Content-Length標(biāo)題,你就一切都好。如果沒有,圖書館將假定GET請(qǐng)求中沒有正文。


你有點(diǎn)偏離地圖的邊緣,因?yàn)槟愕目蛻粽谧鲆恍┓浅2粚こ?破碎的事情。如果你能修復(fù)客戶端,那是你最好的選擇。


也就是說,如果你有一個(gè)需要支持的客戶,但他做錯(cuò)了,你將不得不自己解決一些問題。您不需要一直深入到 C 和 libevent。只需將標(biāo)準(zhǔn)庫中的 net/http 包復(fù)制到您的項(xiàng)目中并進(jìn)行修改。然后更改您的導(dǎo)入語句以指向您的庫版本。


或者,如果您知道客戶端沒有使用 keep-alive,您可以Hijack連接并讀取套接字上剩余的任何內(nèi)容。


查看完整回答
反對(duì) 回復(fù) 2021-06-21
  • 1 回答
  • 0 關(guān)注
  • 280 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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