從Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content:爲什麼對PUT請求的響應不能提供ETag?
原始服務器不能發送一個驗證報頭字段(Section 7.2),諸如
ETag
或Last-Modified
場,在向PUT
的成功響應,除非該請求的表示數據被保存而沒有任何應用於身體的變換(即,資源的新的表示數據與在PUT請求中接收到的表示數據相同)並且驗證器字段值反映新的表示。此要求允許用戶代理知道何時它在存儲器中的表示身體保持爲PUT
的結果的電流,因此不需要從原始服務器再次被檢索,並且新驗證器(一個或多個)中所接收的響應可用於將來的條件請求以防止意外覆蓋(Section 5.2)。
我不能完全理解這個部分... 粗體句子似乎與自己矛盾,不是嗎?
注意PUT
是具有關於節驗證報頭的唯一動詞(見GET
/POST
/DELETE
/PATCH
)。
我沒有在這裏看到一個矛盾。 這裏主要的一點是,如果發生了什麼實際存儲在客戶端發送的內容服務器只能返回一個ETag。如果服務器修改了數據,客戶端將不得不使用後續的GET請求來獲取內容。 –