メインコンテンツまでスキップ

Appendix B. Notes on HTTP Client Compatibility (HTTPクライアント互換性に関する注意事項)

附録 B. Notes on HTTP Client Compatibility (HTTPクライアント互換性に関する注意事項)

WebDAV は HTTP 1.1 との下位互換性を持つように設計されており、実際に下位互換性があることが確認されています。PUT および DELETE メソッドは HTTP で定義されているため、HTTP クライアントと WebDAV 対応クライアントの両方で使用できますが、PUT および DELETE への応答は本仕様で拡張されており、WebDAV クライアントのみが完全に準備できる方法で拡張されています。これらの応答が HTTP のみのクライアントとの相互運用性の問題を引き起こすかどうかについて、いくつかの理論的な懸念が提起されており、このセクションではこれらの懸念に対処します。

HTTP クライアントは認識できない 400 レベルおよび 500 レベルのステータスコードをエラーとして処理するべきであるため、次の新しいステータスコードは問題を引き起こすべきではありません: 422、423、および 507 (424 も新しいステータスコードですが、Multistatus 応答の本文にのみ表示されます)。したがって、たとえば、HTTP クライアントがロックされたリソースに対して PUT または DELETE を試行した場合、423 Locked 応答はユーザーに一般的なエラーを表示する結果になるはずです。

207 Multistatus 応答は興味深いものです。なぜなら、コレクションに DELETE リクエストを発行する HTTP クライアントは、リソースがコレクションであることに気付かず、DELETE 操作が完全または部分的な失敗である可能性があることを理解できないにもかかわらず、207 応答を成功として解釈する可能性があるからです。その解釈は完全には正当化されません。なぜなら、200 レベルの応答は、サーバーがリクエストを「受信、理解、受け入れた」ことを示すものであり、リクエストが完全に成功したことを示すものではないからです。

1 つのオプションは、サーバーがコレクションの DELETE をアトミック操作として扱い、成功の場合は 204 No Content を使用するか、エラーの場合は適切なエラー応答 (400 または 500 レベル) を使用することです。このアプローチは確かに下位互換性を最大化します。ただし、相互運用性テストおよびワーキンググループの議論では、HTTP クライアントが WebDAV コレクションに対して DELETE リクエストを発行するインスタンスは見つかっていないため、この懸念は実用的というよりも理論的です。したがって、サーバーがコレクション DELETE リクエストを WebDAV リクエストとして扱い、207 Multi-Status 応答を送信する場合でも、HTTP クライアントとの相互運用に完全に成功する可能性が高いです。

一般的に、サーバー実装は、理論的な相互運用性の懸念のために変更を加えるのではなく、このドキュメントで定義されている詳細な応答およびその他のメカニズムを使用することが推奨されます。