修复ETag头不生成的bug

已经注入了过滤器ShallowEtagHeaderFilter

@Bean
public Filter etagFilter() {
return new ShallowEtagHeaderFilter();
}


但ETag响应头没有生成。

解决过程:
查看ShallowEtagHeaderFilter源代码,发现这个方法:
protected boolean isEligibleForEtag(HttpServletRequest request, HttpServletResponse response,
int responseStatusCode, byte[] responseBody) {

if (responseStatusCode >= 200 && responseStatusCode < 300 &&
HttpMethod.GET.name().equals(request.getMethod())) {
String cacheControl = (responseGetHeaderAvailable ? response.getHeader(HEADER_CACHE_CONTROL) : null);
if (cacheControl == null || !cacheControl.contains(DIRECTIVE_NO_STORE)) {
return true;
}
}
return false;
}


原来ETag的生成需要满足三个条件:
[list]
[1]响应状态一定得是2xx
[2]请求方法为GET
[3]响应Cache-Control头部没设置或者不能包含“no-store”指令
[/list]
那就好办了,再response里制定Cache-Control
response.setHeader("Cache-Control", "no-cache");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值