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());
        }
}
相关推荐
幼儿园口算大王2 分钟前
Java是实现大根堆
java·开发语言
高山1112 分钟前
面向对象编程的本质
java·面向对象
Maỿbe3 分钟前
java中的CAS机制
java·线程·进程·cas
想躺平的咸鱼干3 分钟前
RestClient
java·后端·elasticsearch·中间件·intellij-idea
0白露4 分钟前
java的深拷贝与浅拷贝
java·开发语言
我命由我1234537 分钟前
Android Studio 问题:Android Studio 一直开在 Updating indexes
android·java·ide·java-ee·android studio·android jetpack·android-studio
hbwhmama1 小时前
ubuntu24.04安装IDEA2025.1.2搭建java开发环境
java·开发语言
真夜1 小时前
个人spring-boot问题记录
java·后端
程序员小奕1 小时前
springboot 百货中心供应链管理系统小程序
java·spring boot·后端
刘白Live1 小时前
【Java】为什么有时候执行countDownLatch+线程池查询列表会丢失数据?
java·后端