我已經實現了一個HTTP 1.1服務器。它是一個嵌入式服務器,所以我只支持RFC的強制性功能。所有響應都發送分塊編碼。 由於HEAD是強制性的,因此也受支持。HTTP HEAD分塊編碼
HEAD是一個沒有主體的GET。因此,服務器發送就像在響應以下的HEAD請求的響應:
HTTP/1.1 200 OK
Server: testServer
Connection: keep-alive
Transfer-Encoding: chunked
什麼我不知道是的確要加一個「0 \ r \ n」,因爲它需要的信號塊的結尾:
HTTP/1.1 200 OK
Server: testServer
Connection: keep-alive
Transfer-Encoding: chunked
0
我試圖收集的有關部分在RFC:
「 HEAD方法是相同,除了在應答服務器不能返回一個消息主體到GET」
「對HEAD請求方法的所有響應都不能包含消息體,即使實體頭字段的存在可能導致人們相信他們會這樣做。」 「任何」不得「包含消息主體(例如1xx,204和304響應以及對HEAD請求的任何響應)的任何響應消息始終由頭之後的第一個空行終止字段,而不管消息中存在的實體標題字段。「
到目前爲止我的理解是,我的第一個解決方案(沒有0)是正確的。但是用Transfer-encoding發送一個消息似乎很奇怪:chunked不會以塊樣式0 \ r \ n結束。
RFC明確告訴你不要包含主體「即使實體頭字段的存在可能導致人們相信他們這樣做」。它能得到多少清晰? – lanzz
你也傾向於第一個解決方案不加0 \ r \ n?傳輸編碼不是實體頭。這是一個通用標題。 – tobias