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());
        }
}
相关推荐
zzb15808 小时前
RAG from Scratch-优化-query
java·数据库·人工智能·后端·spring·mybatis
wuqingshun3141598 小时前
如何停止一个正在退出的线程
java·开发语言·jvm
Barkamin9 小时前
队列的实现(Java)
java·开发语言
骇客野人9 小时前
自己手搓磁盘清理工具(JAVA版)
java·开发语言
J2虾虾9 小时前
在SpringBoot中使用Druid
java·spring boot·后端·druid
清风徐来QCQ9 小时前
Java笔试总结一
java·开发语言
10Eugene10 小时前
C++/Qt自制八股文
java·开发语言·c++
程序员小假10 小时前
为什么要有 time _wait 状态,服务端这个状态过多是什么原因?
java·后端
TDengine (老段)10 小时前
TDengine 视图功能使用
大数据·数据库·servlet·时序数据库·tdengine·涛思数据
yuweiade11 小时前
【Spring】Spring MVC案例
java·spring·mvc