5 回答

TA貢獻1946條經驗 獲得超4個贊
是。換句話說,任何HTTP請求消息都允許包含消息體,因此必須解析消息。但是,GET的服務器語義受到限制,使得正文(如果有的話)對請求沒有語義含義。解析的要求與方法語義的要求是分開的。
所以,是的,你可以使用GET發送一個正文,不,這樣做永遠不會有用。
這是HTTP / 1.1的分層設計的一部分,一旦規范被分區(正在進行中),它將再次變得清晰。
羅伊....
是的,您可以使用GET發送請求正文,但它不應該有任何意義。如果你通過在服務器上解析它并根據其內容更改響應來賦予它意義,那么你忽略了HTTP / 1.1規范第4.3節中的這個建議:
[...]如果請求方法不包含實體主體的定義語義,則在處理請求時應該忽略消息主體。
和HTTP / 1.1規范中的GET方法的描述,第9.3節:
GET方法意味著檢索Request-URI標識的任何信息([...])。
其中聲明請求主體不是GET請求中資源標識的一部分,只是請求URI。
更新 引用為“HTTP / 1.1規范”的RFC2616現已過時。2014年,它被RFC 7230-7237取代。引用“處理請求時應該忽略消息體”已被刪除。它現在只是“請求消息框架獨立于方法語義,即使該方法沒有定義消息體的任何用途”第二個引用“GET方法意味著檢索任何信息......由Request-URI標識”被刪除了。 - 來自評論

TA貢獻1813條經驗 獲得超2個贊
restclient和REST控制臺都不支持這個,但卷曲確實如此。
的HTTP規范說,在第4.3節
如果請求方法的規范(第5.1.1節)不允許在請求中發送實體主體,則消息主體不得包含在請求中。
第5.1.1節將我們重定向到第9.x節的各種方法。他們都沒有明確禁止包含消息體。然而...
通過檢查Request-URI和Host頭字段來確定Internet請求標識的確切資源。
而9.3節說
GET方法意味著檢索由Request-URI標識的任何信息(以實體的形式)。
這一點一起表明,在處理GET請求時,服務器不需要檢查Request-URI和Host頭字段之外的任何其他內容。
總之,HTTP規范并不會阻止您使用GET發送消息體,但是如果所有服務器都不支持它,那么它就不會讓我感到驚訝。
添加回答
舉報