От 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. –