1

「If-Match」ヘッダーを使用して PUT または DELETE を実行するとき、クライアントから送信された ETag が古さを示している場合、単に 412 を返すのではなく、最新のエンティティ全体 (そのHTTP ヘッダーに新しい ETag を追加する) ため、クライアントは別の GET ラウンド トリップを実行する必要がありません。それ以外の場合は確実に実行します。少なくとも私の使用例では、おそらく 100% のケースで実行します。

412 のドキュメントには、賛成も反対も何もありません

そして、たとえば、ステータス コード 409 を見ると、4xx エラーの応答本文で好きなことをすることは一般的に問題ではないようです: http://www.w3.org/Protocols/rfc2616/rfc2616 -sec10.html#sec10.4.10

では、完全な最新エンティティとその ETag を返すことに反対するもの (特に HTTP 仕様) はありますか?

4

2 に答える 2

1

うまくいくはずです:

すべての 1xx (情報)、204 (コンテンツなし)、および 304 (変更なし) 応答には、メッセージ本文を含めてはなりません。他のすべての応答にはメッセージ本文が含まれますが、長さが 0 の場合もあります。

ソース: http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3

于 2011-10-11T04:51:18.723 に答える
0

リクエストは何ですか?If-None-Match で GET しますか? その場合、サーバーはとにかく 412 を返すことは想定されていません。

PUT、DELETE の場合、確実に現在の表現を返すことができます。大規模な表現の場合、それを必要としないクライアントにとっては不便です。

Location ヘッダーを使用して、ペイロードをリソースの表現としてラベル付けすることもできます。http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-16.html#identifying.response.associated.with.representationを参照してください。

于 2011-09-14T11:52:30.407 に答える