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());
        }
}
相关推荐
天地人-神君14 小时前
将.idea取消git托管
java·git·intellij-idea
譕痕14 小时前
Idea 启动报 未找到有效的 Maven 安装问题
java·maven·intellij-idea
Mr YiRan15 小时前
多线程性能优化基础
android·java·开发语言·性能优化
CHEN5_0215 小时前
【leetcode100】和为k的子数组(两种解法)
java·数据结构·算法
liyi_hz200815 小时前
O2OA (翱途)开发平台新版本发布预告:架构升级、性能跃迁、功能全面进化
android·java·javascript·开源软件
熊猫钓鱼>_>15 小时前
Java String 性能优化与内存管理:现代开发实战指南
java·开发语言·性能优化
华仔啊15 小时前
Spring事件的3种高级玩法,90%的人根本不会用
java·后端
练习时长一年15 小时前
Spring容器的refresh()方法
java·开发语言
程序员小假15 小时前
MySQL 与 Redis 如何保证双写一致性?
java·后端
Arlene15 小时前
JVM Java虚拟机
java·开发语言·jvm