Hip*_*ppo 5 spring-mvc interceptor spring-boot
我必须记录响应正文和响应标头。为此,我使用 Interceptor 和ContentCachingResponseWrapper类(我也尝试过使用过滤器,但结果相同)。当我将两者结合起来时,我会丢失一些 HTTP 标头信息,但如果我仅使用拦截器则不会丢失。
我的调度程序 servlet:
@Component("dispatcherServlet")
public class MyDisPatcherServlet extends DispatcherServlet {
@Override
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
super.doDispatch(request, new ContentCachingResponseWrapper(response));
} catch (Exception e) {
super.doDispatch(request,response);
}
}
}
Run Code Online (Sandbox Code Playgroud)
ContentCachingResponseWrapper当我在拦截器的postHandle中使用时:
private Map<String, List<Object>> getHeaders(HttpServletResponse response){
Map<String, List<Object>> headersList = new HashMap<>();
Collection<String> headerNames = ((ContentCachingResponseWrapper)response).getHeaderNames();
// Same if I use response.getHeaderNames()
if (headerNames != null) {
for (String headerName : headerNames) {
headersList.put(headerName, Arrays.asList(response.getHeaders(headerName)));
}
}
return headersList;
}
Run Code Online (Sandbox Code Playgroud)
标题结果:
{设置-Cookie=[[JSESSIONID=109DE678B86611DE627B9B7B3B513DEF;
路径=/服务/服务;仅限 Http]]}
如果我停用该组件MyDisPatcherServlet,并直接从响应中读取标头名称:
private Map<String, List<Object>> getHeaders(HttpServletResponse response){
Map<String, List<Object>> headersList = new HashMap<>();
Collection<String> headerNames = response.getHeaderNames();
if (headerNames != null) {
for (String headerName : headerNames) {
headersList.put(headerName, Arrays.asList(response.getHeaders(headerName)));
}
}
return headersList;
}
Run Code Online (Sandbox Code Playgroud)
标头结果:
{X-Frame-Options=[[DENY]],传输编码=[[分块]],
缓存控制=[[无缓存,无存储,最大年龄=0,必须重新验证]],
X -Content-Type-Options=[[nosniff]]、Connection=[[close]]、
Set-Cookie=[[JSESSIONID=9E2F642595202D87935F4CD5C089ADFE;
路径=/服务/服务;HttpOnly]]、Pragma=[[无缓存]]、
过期=[[0]]、X-XSS-Protection=[[1; 模式=块]],日期=[[2018 年 7 月 23 日星期一 16:15:55 GMT]],Content-Type=[[application/json;charset=UTF-8]]}
提前致谢。
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |