ShallowEtagHeaderFilter这是 Spring 处理 Http 请求上的 If-None-Match header 的一部分。作为 Http 1.1 规范的一部分,如果请求中发送的 If-None-Match header 的内容与 Etag header 相同,则返回 304 - Not Modified 的 Http 状态。这对缓存很有帮助,因为这意味着如果客户端和服务器上的 Etag 相同,则内容将相同。
这很好。
但是我的问题是 - Spring 是否支持 If-Match header (同样是 HTTP 1.1 的一部分)而不是 If-None-Match,因为就文档而言,它看起来像 ShallowEtagHeaderFilter 只处理 If-不匹配标题。我需要 If-Match header 来防止同时请求覆盖前一个请求。 IE 我只希望在 Etag 相同时处理请求,因此它们具有最新版本的实体。
最佳答案
看起来 ShallowEtagHeaderFilter
不支持 If-Match
:
curl "Accept: application/json" -H 'If-Match: "somevalue"' -i http://localhost:8080/rest-sec/api/resources/1
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: "03cb37ca667706c68c0aad4cb04c3a211"
Content-Type: application/json;charset=UTF-8
Content-Length: 56
Date: Fri, 11 Jan 2013 14:58:40 GMT
我打开了一个 JIRA 问题来跟踪这个: https://jira.springsource.org/browse/SPR-10164
关于java - 在 Spring 中实现 If-Match HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617416/