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());
        }
}
相关推荐
invicinble2 分钟前
关于写原创文章的思路分析
java·spring boot·spring
heartbeat..3 分钟前
MySQL 索引从入门到精通:核心概念、类型与实战优化
java·数据库·mysql·索引
heartbeat..3 分钟前
MySQL 存储引擎解析:InnoDB/MyISAM/Memory 原理与选型
java·数据库·mysql·存储引擎
kklovecode5 分钟前
C语言数组:零长数组,可变数组,多维数组
java·c语言·算法
LeetCode天天刷7 分钟前
1348 推文计数【区间】
java·服务器·windows
NE_STOP13 分钟前
SpringBoot+shiro+jwt前后端分离鉴权
java
小当家.10513 分钟前
JVM/八股详解(下部):垃圾收集、JVM 调优与类加载机制
java·jvm·面试
szm022514 分钟前
Java并发
java·开发语言
Hi2024021715 分钟前
HTTPS流量分析-网关抓包与解密全解析
网络协议·http·https
天“码”行空20 分钟前
java的设计模式-----------单例类
java·开发语言·设计模式