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

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

java 复制代码
HttpServletResponse response;

// 返回headers
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

三、解决问题

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

java 复制代码
for (Header header : httpResponse.getHeaders()) {
        if ("Content-Type".equalsIgnoreCase(header.getName())) {
            response.setContentType(header.getValue());
        } else if ("Content-Length".equalsIgnoreCase(header.getName())) {
            response.setContentLength(Integer.valueOf(header.getValue()));
        } else {
            response.setHeader(header.getName(), header.getValue());
        }
}
相关推荐
Wpa.wk3 分钟前
selenium自动化测试-简单PO模式 (java版)
java·自动化测试·selenium·测试工具·po模式
洛_尘10 分钟前
JAVA第十一学:认识异常
java·开发语言
沐浴露z28 分钟前
如何应对服务雪崩?详解 服务降级与服务熔断
java·微服务
liwulin050634 分钟前
【JAVA】AES加密
java
阿宁又菜又爱玩42 分钟前
Maven基础知识
java·maven
S***q37744 分钟前
【Springboot】@Autowired和@Resource的区别
java·spring boot·mybatis
南部余额1 小时前
SpringBoot自定义场景启动器
java·spring boot·场景启动器
p***s911 小时前
【SpringBoot】日志文件
java·spring boot·spring
z***D6481 小时前
SpringBoot 新特性
java·spring boot·后端