当前位置:   article > 正文

HttpServletResponse设置headers返回,发现headers中缺少“Content-Length“和“Content-Type“两个参数。

HttpServletResponse设置headers返回,发现headers中缺少“Content-Length“和“Content-Type“两个参数。

业务中需要将用httpUtils请求返回的headers全部返回,塞到HttpServletResponse中,代码如下:

  1. HttpServletResponse response;
  2. // 返回headers
  3. Arrays.stream(httpResponse.getHeaders()).forEach(header -> response.setHeader(header.getName(), header.getValue()));

一、发现问题:

塞到HttpServletResponse中之后,发现headers中缺少"Content-Length"和"Content-Type"两个参数。

使用http直接请求,和使用本项目代理请求对比,发现最后headers中缺少"Content-Length"和"Content-Type"。

二、查找问题

看源码发现遇到这两个特殊字段时,分别赛到了setContentTypesetContentLength

三、解决问题

所以需要再遍历时候重新赛回去

  1. for (Header header : httpResponse.getHeaders()) {
  2. if ("Content-Type".equalsIgnoreCase(header.getName())) {
  3. response.setContentType(header.getValue());
  4. } else if ("Content-Length".equalsIgnoreCase(header.getName())) {
  5. response.setContentLength(Integer.valueOf(header.getValue()));
  6. } else {
  7. response.setHeader(header.getName(), header.getValue());
  8. }
  9. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/796635
推荐阅读
相关标签
  

闽ICP备14008679号