Transfer-Encoding: chunked添加Content-Length: 574712返回

2023-05-16

一、问题背景:

开发中有时候有的功能需要返回content-length字段,根据此字段进行下载进度的展示。而springboot默认在数据量大的时候是进行了Transfer-Encoding: chunked 设置的。
需要我们手动对需要返回Content-Length: 574712的接口进行filter配置。

二、添加filters

FilterConfig.java

package com.eduer.books.config;
 
import com.eduer.books.modules.app.filters.AddContentLengthFilter;
import com.google.common.collect.Lists;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; 
 
import java.util.List;

/**
 * Filter配置
 *
 * @author books
 */
@Configuration
public class FilterConfig {

    /**
     * 给特定接口加content-length返回
     * @return FilterRegistrationBean
     */
    @Bean
    public FilterRegistrationBean contentLengthFilterRegistrationBean() {
        FilterRegistrationBean filterBean = new FilterRegistrationBean();
        filterBean.setFilter(new AddContentLengthFilter());
        List<String> urls = Lists.newArrayList();
        // 只针对指定接口类型返回content-length
        urls.add("/app/clientApi");
        filterBean.setUrlPatterns(urls);
        return filterBean;
    }
}

三、新建AddContentLengthFilter

AddContentLengthFilter.java

package com.eduer.books.modules.app.filters;

import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.ContentCachingResponseWrapper;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AddContentLengthFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        ContentCachingResponseWrapper cacheResponseWrapper;
        if (!(response instanceof ContentCachingResponseWrapper)) {
            cacheResponseWrapper = new ContentCachingResponseWrapper(response);
        } else {
            cacheResponseWrapper = (ContentCachingResponseWrapper) response;
        }

        filterChain.doFilter(request, cacheResponseWrapper);

        cacheResponseWrapper.copyBodyToResponse();
    }
}

四、测试:

4.1 修改前:

Response Headers没有返回 Content-Length: 574712的属性。
在这里插入图片描述

4.2 修改后:

已经成功添加了 Content-Length: 574712的属性。
在这里插入图片描述

END

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Transfer-Encoding: chunked添加Content-Length: 574712返回 的相关文章

  • 如何在 Java/Eclipse 中使用特殊字符

    如何在 Java Eclipse 中使用 显示 或 等字符 当我尝试直接使用它们时 例如在源代码中 Eclipse无法保存文件 我能做些什么 编辑 如何找到 unicode 转义序列 问题是您使用的字符无法以文件设置的编码 Cp1252 表
  • Java中的字节和字符转换

    如果我将一个字符转换为byte然后回到char 那个角色神秘地消失了 变成了别的东西 这怎么可能 这是代码 char a line 1 byte b byte a line 2 char c char b line 3 System out
  • 黑色左/右三角形大小不同

    我使用黑色左指三角形 右左指三角形几何形状作为网站上的链接 并使用它们的 HTML 代码 和 9664 9654 由于某种原因 即使我在没有其他元素的空白页面上使用三角形 它们也不会以相同的大小显示 在 Chrome 上 向左指向的位置比向
  • Python。短语表示,如何改变?

    我不知道这个短语中存在的编码是什么 我也想知道这个问题的答案 主要是 我想改变我的措辞 例如 你好世界 变成你好 20世界 0A 老天啊 变成ol C3 A1 20mundo 0A 0A 我想要一个 python 解决方案 如果我有 gt
  • 在我的 ramaz 应用程序上显示 £ 符号时,我收到“不兼容的字符编码:CP850 和 UTF-8”

    显示时收到 不兼容的字符编码 CP850 和 UTF 8 我的 ramaz 应用程序上的符号 我怎样才能摆脱这个错误 我的 head 标签中有 UTF 8 元标签 当我输入 用键盘输入符号 看 我已将以下代码放入我的 ruby 文件中 但它
  • Windows-1252 编码 - 显示不正确的字符

    我有一个缓冲区 其中包含以 Windows 1252 编码的字符 然而 当我使用适当的编码创建一个新的字符串时 我经常得到询问标记 而不是预期的结果 例如 byte tmps new byte byte 0xfb System out pr
  • crypto createHMAC 输出根据 Nodejs 版本而有所不同

    我在升级节点版本时遇到加密模块问题 创建的HMAC取决于节点的版本 您将在下面找到重现该问题的代码片段 如果我将密钥编码为 BASE64 或任何 HMAC 不依赖于 node js 版本 如果我将其编码为二进制 则当我更改 Node js
  • 从 SinkWriter 或 ICodecAPI 或 IMFTransform 获取编码器名称

    我使用 SinkWriter 来使用媒体基础对视频进行编码 初始化 SinkWriter 后 我想获取它使用的底层编码器 并打印出它的名称 这样我就可以看到它使用的编码器 就我而言 编码器很可能是H 264 视频编码器 http msdn
  • Java:如何检测(并更改?)System.console 的编码?

    我有一个在控制台上运行的程序 其变音符号和其他特殊字符在 Mac 上以 的形式输出 这是一个简单的测试程序 public static void main String args System out println h h System
  • Intellij IDEA 2016.3默认属性文件编码不起作用

    我已在 Intellij IDEA 2016 3 中将属性文件的默认编码设置为 ISO 8859 1 然后创建属性文件 但文件编码仍然是 UTF 8 任何想法 或者这应该是一个问题 Updates 将项目和系统默认编码更改为 ISO 885
  • .properties 或 JSP 编码有问题

    我有jsp文件
  • 如何让 IE 以 UTF-8 格式发布 FORM 数据?

    这是这个问题的延续 Java Jersey 以字节数组形式接收表单参数 https stackoverflow com questions 6282626 java jersey receive form parameter as byte
  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • Java Swing 的 UTF-8 支持问题? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在Swing应用程序中实现UTF 8格式 https stackoverflow com questions 13804113 how to implement utf 8 format in s
  • Golang 结构的 XML 和 JSON 标签?

    我有一个可以根据 HTTP 请求标头输出为 JSON 或 XML 的应用程序 我可以通过将正确的标签添加到我正在使用的结构中来实现正确的输出 但我不知道如何为 JSON 和 XML 指定标签 例如 序列化以纠正 XML type Foo s
  • 如何将UTF-8编码的汉字从MySql正确导出到SQL

    过去三天我们正在与严重的问题作斗争 我们从PhpmyAdmin导出MySql数据库文件 数据库条目中写入的数据是带有UTF 8字符集的中文 导出后将其转换为拉丁字符集 现在我们正在将此数据库SQl文件导入到其他主机 我们在UTF 8和排序规
  • 导出 CSV 文件时出现编码问题

    我正在使用 Asp net mvc 生成 CSV 文件 但在处理葡萄牙语中的特殊字符时遇到问题 我使用以下代码返回文件 public FileContentResult RelMatriculas RelRematriculaVM mode
  • 将字符串编码为 BigInteger,然后解码回字符串

    我找到了一个几乎可以解决我的问题的答案 https stackoverflow com a 5717191 1065546 https stackoverflow com a 5717191 1065546 这个答案演示了如何使用使用 Ap
  • 为什么 Python 不能打印 Unicode 符号? [复制]

    这个问题在这里已经有答案了 可能的重复 Python UnicodeDecodeError 我是否误解了编码 https stackoverflow com questions 368805 python unicodedecodeerro
  • python 和 android 中通过 AES 算法加密和解密

    我有用于 AES 加密的 python 和 android 代码 当我在android中加密文本时 它在python上成功解密 但无法在android端解密 有人有想法吗 Python代码 import base64 import hash

随机推荐

  • FreeRTOS初级篇----删除任务

    任务既然可以被创建 xff0c 那么自然也可以被删除 xff0c 对于某些执行一次或几次就不需要的任务来说 xff0c 可以在执行完成后 xff0c 把此任务删除 xff0c 可以通过别的任务将其删除 xff0c 也可以任务自己删除自己 任
  • FreeRTOS初级篇----一个函数创建多个任务

    之前说过 xff0c 创建任务的时候 xff0c 可以传递给任务参数 xff0c 下面通过实验 xff0c 对一个任务函数传入不同的参数展示如何使用一个函数创建多个任务 任务函数 xff1a 把传入的数据转换为int型数据然后打印出来 sp
  • 大学生想要通过看书自学编程,却始终没成功,是因为你没有技巧!

    在大学里面 xff0c 有很多的方式来学习编程 xff0c 从在线教程到完成在线课程 xff0c 到密集编程的新手训练营 教程都很棒 xff0c 但它们通常只给你基础知识 与此同时 xff0c 在线教程和线下课程可能非常昂贵 xff0c 虽
  • FreeRTOS初级篇----任务管理

    一 任务状态 再FreeRTOS中 xff0c CPU同一时刻只执行一个任务 xff0c 只不过是所有任务切换的速度特别快 xff0c 默认1ms切换一次任务 xff0c 所以宏观上来看就是CPU再同时运行所有任务 根据任务的执行情况 xf
  • FreeRTOS中级篇

    一 内存管理 1 五种内存管理模式 FreeRTOS提供了5种内存管理实现方法 xff0c 可以根据不同的使用场合选择不同的模式 关于5中内存管理模式可以看下面这篇文章 链接 https zhuanlan zhihu com p 11527
  • LVGL8移植FATFS并适配到STM32F407

    目前LVGL版本已经更新到8 3版本 xff0c FATFS也是在嵌入式领域常用的文件系统 网上许多在LVGL上移植FATFS的教程大都是基于LVGL7版本的 xff0c 而且过程较为凌乱 本文旨在帮助大家了解在LVGL8上移植FATFS文
  • openstack dashboard简体中文汉化

    这里阐述的是fuel工具部署的openstack 环境的dashboard进行简体中文汉化 1 xff09 直接运行 apt get install gettext 命令 2 xff09 转到fuel已经配置好的中文配置文件夹下 cd us
  • 【转】gcc编译错误表

    conversion from s to s not supported by iconv iconv 不支持从 s 到 s 的转换 iconv open iconv open no iconv implementation cannot
  • _tcsstr的用法以及源码的源码

    tcsstr 字符串1在字符串2中首次出现的位置 xff0c 未出现返回NULL值 xff1b tcsrchr xff1a 字符1 在字符串2中首次出现的位置 xff0c 未出现返回NULL值 TCHAR字符串操作函数 xff1a tcsl
  • 修改ElementUI默认滚动条的样式

    一 默认的滚动条 很宽很占地方 xff0c 不美观 xff0c 与页面设计格格不入 二 优化后的滚动条 很美观 xff0c 可以根据实际风格调整颜色 xff0c 宽度 xff0c 高度等 三 优化代码 在全局样式里加入以下代码 xff0c
  • K8S异常之出现大量被驱逐的pod,导致服务无法访问的问题

    一 背景 用kuboard作为k8s管理工具的 xff0c 运行一段时间后 xff0c 访问时 xff0c 浏览器显示以下提示 xff1a 排查问题 1 查看k8s的情况 如下 xff0c 发现正常 root 64 nb001 data k
  • 服务监控(四)之SpringBoot整合Prometheus

    1 新建一个springboot项目 我这里版本是 xff1a 2 2 4 RELEASE xff0c pom中加入如下必要依赖 xff1a span class token comment lt https micrometer io d
  • 服务监控(五)之Grafana 接入Prometheus 的数据实现服务监控

    官方文档 xff1a https prometheus io docs visualization grafana 1 添加Prometheus 数据源 1 1 从下图所示的位置进入 xff0c 添加data source 1 2 点击 A
  • 应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题

    今天运行程序 xff0c 改了一段代码 xff01 然后每次一运行程序就异常退出 xff0c 打印如下信息 xff1a buffer overflow detected shm costomer terminated Aborted 根据单
  • URAM和BRAM有什么区别

    无论是7系列FPGA UltraScale还是UltraScale Plus系列FPGA xff0c 都包含Block RAM xff08 BRAM xff09 xff0c 但只有UltraScale Plus芯片有UltraRAM也就是我
  • 服务监控(六)之Prometheus接入mysqld_exporter使用Grafana监控MySQL

    需准备的前置内容 xff1a 1 Prometheus安装配置 直通车 xff1a https blog csdn net wdy 2099 article details 124204720 2 Grafana安装配置 直通车 xff1a
  • CentOS7 升级OpenSSH9.0全过程和坑

    近日 xff0c 漏洞肆虐 xff0c 需要升级新版本 xff0c 才能解决漏洞 故有此文 xff1a 0 查看当前版本 span class token punctuation span root 64 host testsvc open
  • Gradle下载安装

    Gradle 官网地址 xff1a https gradle org releases 一 下载 访问上述地址https gradle org releases 选择下载 xff0c binary only 和 complete都可以 下载
  • Gradle 新建项目及Gradle常用命令&镜像源修改

    一 Gradle 项目的目录结构说明 xff1a 二 创建 Gradle 项目 用idea创建 xff0c 按图示步骤即可 创建完项目后 xff0c 配置gradle的安装目录 xff1a 创建完成后的gradle项目的目录结构 xff0c
  • Transfer-Encoding: chunked添加Content-Length: 574712返回

    一 问题背景 xff1a 开发中有时候有的功能需要返回content length字段 xff0c 根据此字段进行下载进度的展示 而springboot默认在数据量大的时候是进行了Transfer Encoding chunked 设置的