1 回答

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)容。
- 1 回答
- 0 關(guān)注
- 280 瀏覽
添加回答
舉報(bào)