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());
        }
}
相关推荐
java1234_小锋13 分钟前
Java高频面试题:谈谈你对SpringBoot的理解?
java·开发语言·spring boot
空空潍14 分钟前
Spring AI 实战系列(三):多模型共存+双版本流式输出
java·人工智能·spring
彭于晏Yan26 分钟前
SpringBoot整合ECC实现文件签名与验签
java·spring boot·后端
pupudawang28 分钟前
Spring EL 表达式的简单介绍和使用
java·后端·spring
jiankeljx34 分钟前
Spring Initializr创建springboot项目,提示java 错误 无效的源发行版:16
java·spring boot·spring
competes34 分钟前
深圳程序员职业生涯
java·大数据·开发语言·人工智能·java-ee
深蓝轨迹36 分钟前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
小小小米粒1 小时前
Collection(单列集合)、Map(双列集合),容易搞混的 Collections 工具类。
java·开发语言
skiy1 小时前
springboot+全局异常处理
java·spring boot·spring
愤豆1 小时前
07-Java语言核心-JVM原理-JVM对象模型详解
java·jvm·c#