2014-03-07 36 views
2

RFC2616 Sec 14「14.26如果-無 - 匹配」如果無 - 匹配度:*

的含義:「如果 - 無 - 匹配:*」的是,該方法必須不如果表示執行由原始服務器選擇...存在,並且如果該表示不存在,則應該執行。此功能旨在防止PUT操作之間的競爭。

我不明白這個功能如何防止競爭條件。這與簡單地省略「If-Match」標題有什麼不同?

回答

2

想象一下,您的客戶端認爲資源不存在於服務器上,並且希望在服務器上僅放置一種資源。

如果兩個這樣的客戶端正在操作,他們都可能認爲資源不存在並且同時執行他們的輸入。如果沒有If-None-Match: *標頭,它們都會執行PUT請求。有了這個頭文件,一個客戶端將會失敗(看到一個304 - Not Modified)。

+0

啊,謝謝。如果讀取「如果** [任何] **表示存在,則不得執行該方法」,該規範會更清晰。「 –