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());
        }
}
相关推荐
lionliu051944 分钟前
WebAssembly (Wasm)
java·开发语言·wasm
咸鱼加辣1 小时前
【java面试题】springboot的生命周期
java·开发语言·spring boot
Billow_lamb1 小时前
MyBatis Plus 中常用的插件列表
java·mybatis
程序猿DD1 小时前
人工智能如何改变 Anthropic 的工作方式
java·后端
C雨后彩虹1 小时前
任务总执行时长
java·数据结构·算法·华为·面试
桦说编程1 小时前
Guava Forwarding系列类详解——装饰器模式实战
java·后端·设计模式
柒.梧.2 小时前
数据结构:二叉排序树构建与遍历的解析与代码实现
java·开发语言·数据结构
大道之简2 小时前
SpringAI基于内存存储向量
java
算法与双吉汉堡2 小时前
【短链接项目笔记】Day2 用户注册
java·redis·笔记·后端·spring