If-Unmodified-Since
Penggunaan
Klien menyertakan If-Unmodified-Since untuk mencegah tertimpanya perubahan yang dibuat pihak lain. Skenario yang paling umum melibatkan permintaan HTTP PUT atau DELETE ketika klien memerlukan kepastian bahwa sumber daya tetap berada dalam status yang diamati sebelumnya. Jika klien lain memodifikasi sumber daya tersebut setelah tanggal yang tercantum di header, server menolak permintaan itu dengan respons 412 Precondition Failed.
Hal ini mengatasi masalah lost update. Dua klien mengambil sumber daya yang sama, keduanya melakukan penyuntingan, dan keduanya mengirim pembaruan. Tanpa prakondisi, pembaruan kedua akan menimpa pembaruan pertama secara diam-diam. Menambahkan If-Unmodified-Since pada permintaan kedua memastikan server mendeteksi konflik tersebut.
Nilai header ini menggunakan format tanggal HTTP. Server membandingkan tanggal ini dengan stempel waktu Last-Modified milik sumber daya. Ketika tanggal modifikasi sumber daya sama dengan atau lebih awal daripada nilai di If-Unmodified-Since, kondisi tersebut terpenuhi dan server melanjutkan pemrosesan.
Untuk jaminan konsistensi yang lebih kuat, sebaiknya gunakan If-Match dengan nilai ETag. ETag memberikan presisi hingga tingkat byte, sedangkan kondisi berbasis tanggal hanya memiliki resolusi satu detik.
HTTP-date
Nilainya mengikuti format IMF-fixdate. Tanggal tersebut mewakili waktu modifikasi terakhir yang masih dapat diterima untuk sumber daya itu.
If-Unmodified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
Contoh
Seorang klien mengambil sebuah dokumen pada 15 Februari 2025, dan kini mengirim pembaruan. Nilai If-Unmodified-Since cocok dengan tanggal Last-Modified yang diterima pada respons awal. Jika dokumen tersebut berubah setelah stempel waktu ini, server merespons dengan 412 Precondition Failed.
PUT /docs/report.json HTTP/1.1
Host: api.example.re
Content-Type: application/json
If-Unmodified-Since: Sat, 15 Feb 2025 10:30:00 GMT
Ketika dipasangkan dengan permintaan Range untuk unggahan parsial, If-Unmodified-Since memastikan sumber daya dasarnya tidak berubah di antara potongan-potongan tersebut.
PATCH /files/dataset.csv HTTP/1.1
Host: api.example.re
If-Unmodified-Since: Fri, 14 Feb 2025 08:00:00 GMT
Content-Range: bytes 0-1023/4096