HTTP协议中的 If-Unmodified-Since
消息头用于请求之中,使得当前请求成为条件式请求:只有当资源在指定的时间之后没有进行过修改的情况下,服务器才会返回请求的资源,或是接受 POST
或其他 non-safe 方法的请求。如果所请求的资源在指定的时间之后发生了修改,那么会返回 412
(Precondition Failed) 错误。
常见的应用场景有两种:
- 与 non-safe 方法如
POST
搭配使用,可以用来优化并发控制,例如在某些wiki应用中的做法:假如在原始副本获取之后,服务器上所存储的文档已经被修改,那么对其作出的编辑会被拒绝提交。 - 与含有
If-Range
消息头的范围请求搭配使用,用来确保新的请求片段来自于未经修改的文档。
Header type | Request header |
---|---|
Forbidden header name | no |
语法
If-Unmodified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
指令
- <day-name>
- "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" 或 "Sun" 之一 (区分大小写)。
- <day>
- 两位数字表示的天数, 例如"04" or "23"。
- <month>
- "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" 之一(区分大小写)。
- <year>
- 4位数字表示的年份, 例如 "1990" 或者"2016"。
- <hour>
- 两位数字表示的小时数, 例如 "09" 或者 "23"。
- <minute>
- 两位数字表示的分钟数,例如"04" 或者 "59"。
- <second>
- 两位数字表示的秒数,例如 "04" 或者 "59"。
GMT
-
国际标准时间。HTTP中的时间均用国际标准时间表示,从来不使用当地时间。
示例
If-Unmodified-Since: Wed, 21 Oct 2015 07:28:00 GMT
规范
Specification | Title |
---|---|
RFC 7232, section 3.4: If-Unmodified-Since | Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests |
浏览器兼容性
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
相关内容
If-Unmodified-since
If-Match
If-None-Match
If-Range
412
Precondition Failed