报文大小限制、请求体类型总结

文章目录

  • 1. 各节点请求体有无限制
    • 1.1 http协议
    • 1.2 TCP/IP层限制
    • 1.3 浏览器
    • 1.4 nginx
    • 1.5 gateway
    • 1.6 tomcat
    • 1.7 springboot
    • 1.8 内存、磁盘处理不了一切白搭
  • 2. 请求体类型
    • 2.1 application/x-www-form-urlencoded
    • 2.2 multipart/form-data
    • 2.3 application/json
    • 2.4 text/plain
    • 2.5 application/xml 或 text/xml
    • 2.6 application/octet-stream
    • 2.7 其他自定义或特定格式

  • 报文分为请求报文、响应报文
  • 响应报文一般无限制(比如一个几十MB的excel照样可以下载下来)
  • 请求报文有限制

1. 各节点请求体有无限制

1.1 http协议

请求体、响应体无限制

1.2 TCP/IP层限制

虽然HTTP不限制报文长度,但底层的TCP协议实际上有其最大报文段长度(Maximum Segment Size, MSS),这会影响单个TCP包能传输的数据量。不过对于HTTP来说,大文件会被分割成多个TCP包传输。

1.3 浏览器

  • get请求url长度没有明确限制,但最好不要超过2048个字符
  • post请求:Chrome浏览器对HTTP请求体的大小没有严格的硬性限制。在实际应用中,Chrome可以处理几MB到几十MB甚至更大的POST请求体

1.4 nginx

Nginx默认的请求体大小限制是1MB。这意味着,如果客户端发送到Nginx服务器的HTTP请求体(例如POST请求中的数据)超过了1MB,Nginx将会拒绝该请求,并返回一个413 Request Entity Too Large错误。

在Nginx的配置文件中,可以通过修改client_max_body_size指令来调整这个限制:

http {
    client_max_body_size 1m; # 默认值为1MB
}

若要增大请求体大小限制,可以将其设置为更大的数值,如允许上传50MB的文件:

http {
    client_max_body_size 50m; # 设置为50MB
}

请注意,更改配置后通常需要重新加载或重启Nginx服务以使新配置生效。

1.5 gateway

未限制

1.6 tomcat

请求体大小默认2MB
例如,在server.xml中添加或修改如下配置:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxPostSize="20971520" /> <!-- 设置为20MB,可根据需要自定义 -->

若要取消POST请求大小的限制,可将 maxPostSize 属性值设为 -1,表示不限制POST数据的大

1.7 springboot

  • Spring Boot 默认情况下并没有明确指定HTTP请求体的最大大小限制,这个限制主要取决于内嵌的Web服务器容器。对于大多数场景(默认使用Tomcat作为Web服务器),POST请求体大小的限制通常设置为2MB
  • 默认文件大小是1MB

可以重新设置:

spring:
  servlet:
    multipart:
      enabled: true #是否启用http上传处理
      max-request-size: 100MB #最大请求体的大小
      max-file-size: 20MB #设置单个文件最大长度
      file-size-threshold: 20MB #当文件达到多少时进行磁盘写入

1.8 内存、磁盘处理不了一切白搭

2. 请求体类型

HTTP请求体(Request Body)的类型取决于请求方法和发送的数据内容,常见的请求体类型包括:

在发送HTTP请求时,可以通过设置Content-Type头部来指定请求体的类型

2.1 application/x-www-form-urlencoded

在这里插入图片描述

这是最常见的一种编码方式,适用于表单提交数据。键值对通过&分隔,每个键值对内部通过等号(=)进行连接。
示例:

key1=value1&key2=value2

2.2 multipart/form-data

  • 通常用于文件上传和其他需要同时包含文本和二进制数据的场景。这种格式会将表单数据分割成多个部分(parts),每个部分可以有自己的Content-Type、名称和文件名。
  • 比如文件导入,然后key部分选择File类型,在value部分选择要导入的文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 application/json

在这里插入图片描述

JSON(JavaScript Object Notation)是现代Web服务中常用的请求体格式,适合传输结构化数据,便于客户端和服务器端进行处理。
示例:

{
    "key1": "value1",
    "key2": "value2"
}

2.4 text/plain

纯文本格式,适用于简单的文本信息传递。

2.5 application/xml 或 text/xml

  • XML格式,早期Web服务中广泛使用的数据交换格式。
  • 比如ESB报文就是xml形式,且esb报文xml标签新加需要治理,esb有白名单校验

2.6 application/octet-stream

  • 二进制流数据,常用于文件或其他非结构化的二进制数据传输。

  • application/octet-stream 是一个通用的MIME类型(Multipurpose Internet Mail Extensions),它代表任意类型的二进制数据流。在HTTP协议中,当发送或接收的数据无法明确指定为某种特定格式时,可以使用此类型作为请求体或响应体的内容类型。

  • 例如,在文件上传和下载场景中,如果服务器返回的是一个未知或非特定类型的二进制文件,或者客户端向服务器发送的是一个不明确具体格式的二进制数据块,则可以将Content-Type设置为 application/octet-stream。

  • 这种类型表明了传输的数据是一个原始的、未解释的字节序列,需要由接收端根据上下文或其他信息来决定如何处理这些数据。浏览器通常会提示用户保存这样的内容到磁盘上,而不是尝试在页面上展示或执行它。

在这里插入图片描述

2.7 其他自定义或特定格式

根据具体应用场景和服务约定,可能还有其他类型的请求体格式,如application/pdf(PDF文档)、image/jpeg(JPEG图片)等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/301649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从贝索斯、英伟达们手里又融了7000万美元,Perplexity还真奔着取代Google去了

AI应用千千万&#xff0c;到底哪些才真正值得你花钱花时间&#xff1f; 对于这个问题&#xff0c;埃森哲人工智能高级顾问、《哈佛商业评论》播客频道主持人Azeem Azhar给出的答案是&#xff1a;“如果必须选择一个&#xff0c;我不会选ChatGPT或Claude&#xff0c;而是Perple…

神经网络的核心:简单易懂理解 PyTorch 非线性激活函数

目录 torch.nn子函数非线性激活详解 nn.Softmin Softmin 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.Softmax Softmax 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.Softmax2d Softmax2d 函数简介 函数工作原理 输入…

数据摆渡会遇到哪些风险?要如何应对?

数据摆渡&#xff08;Data Shuttle&#xff09;是一种在不同网络环境之间安全、可控地传输数据的过程。在企业环境中&#xff0c;这通常涉及到将数据从内部网络&#xff08;内网&#xff09;传输到外部网络&#xff08;外网&#xff09;&#xff0c;或者在多个隔离的内部网络之…

安恒2023全球高级威胁态势研究报告(网盘下载)

《2023全球高级威胁态势研究报告》 2023 年&#xff0c;一系列新兴威胁的不断涌现&#xff0c;使得网络安全面临着前所未有的挑战。过去一年&#xff0c;我们目睹了地缘政治动荡、科技进步和人类活动的交织&#xff0c;进一步深刻地塑造了数字时代的未来。 在此背景下&#xff…

java 体育明星管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web 体育明星管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysq…

3.2 MAPPING THREADS TO MULTIDIMENSIONAL DATA

1D、2D或3D线程组织的选择通常基于数据的性质。图片是2D像素阵列。使用由2D块组成的2D网格通常可以方便地处理图片中的像素。图3.2显示了处理7662图片P的这种安排&#xff08;水平或x方向为76像素&#xff0c;垂直或y方向为62像素&#xff09;。假设我们决定使用16 x 16块&…

MyBatis实战指南(一):从概念到特点,助你快速上手,提升开发效率!

嗨~ 今天的你过得还好吗&#xff1f; 如果命运是世界上最烂的编剧 你就要争取做你人生最好的演员 &#x1f31e; - 2024.01.08 - MyBatis是一个优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取…

【百科物理】-2.重力与浮力

导入 问题&#xff1a; 灯掉下来&#xff0c;重力太大&#xff0c;掉下来。 重力来源于地球&#xff0c;地球上所有的东西都受重力向下落。 搬箱子&#xff0c;搬东西沉&#xff0c;是受重力的影响&#xff0c;重力的方向是竖直向下的。 万有引力&#xff1a;任何两个物体之间都…

flutter项目用vscode打包apk包,完美运行到手机上

1.创建密钥库 执行以下命令: keytool -genkey -v -keystore F:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key 生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000 天) 2.填写密钥内容 执行以上命令后会提示一次输入密钥库密码、确认…

MySQL取出N列里最大or最小的一个数据

如题&#xff0c;现在有3列&#xff0c;都是数字类型&#xff0c;要取出这3列里最大或最小的的一个数字 -- N列取最小 SELECT LEAST(temperature_a,temperature_b,temperature_c) min FROM infrared_heat-- N列取最大 SELECT GREATEST(temperature_a,temperature_b,temperat…

解决matplotlib中文乱码问题

一、修改配置文件&#xff0c;一劳永逸的方法 1. 首先&#xff0c;下载SimHei字体&#xff08;即SimHei.tff包&#xff09;下载地址&#xff1a;SimHei.ttf|字体下载 2. 下载好之后&#xff0c;找到matplotlib文件夹&#xff0c;如下图所示&#xff1a; 如果找不到matplotlib…

服务容错-熔断策略之断路器hystrix-go

文章目录 概要一、服务熔断二、断路器模式三、hystrix-go3.1、使用3.2、源码 四、参考 概要 微服务先行者Martin Fowler与James Lewis在文章microservices中指出了微服务的九大特征&#xff0c;其中一个便是容错性设计(Design for failure)。正如文章中提到的&#xff0c;微服…

结构型设计模式——桥接模式

桥接模式 如果一个系统需要在抽象化和具体化之间增加更多的灵活性&#xff0c;避免在两个层次之间建立静态的继承关系&#xff0c;通过桥接模式可以使它们在抽象层建立一个关联关系&#xff08;参考案例&#xff1a;即视频文件格式对象成为操作系统类的一个成员变量&#xff0…

Redis之集群方案比较

哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c;哨兵的配置略微复杂&#xff0c;并且性能和高可用性等各方面表现一般&a…

Java智慧工地可视化APP信息管理平台源码(项目端、监管端、数据大屏端、APP端)

一、智慧工地信息化解决方案 智慧工地系统以推进施工过程管理信息化、数字化、智慧化为手段&#xff0c;促进第五代通信技术 (5G) 、大数据、智能设备、人工智能等与建筑工程管理进一步融合。智慧化工地建设全面加速&#xff0c;以数字技术助力建筑工地转型升级、提速增效、提…

SSC使用总结

文章目录 写在前面一、SSC工具能做什么二、下载安装三、使用教程1. 新建2. 信息配置3. 生成源码4. 创建EXCEL配置文件 写在前面 Slave Stack Code Tool&#xff08;简称SSC Tool&#xff0c;后文直接用SSC表示&#xff09;&#xff0c;它是EtherCAT从站协议栈生成工具&#xf…

使用proteus进行主从JK触发器仿真失败原因的分析

在进行JK触发器的原理分析的时候&#xff0c;我首先在proteus根据主从JK触发器的原理进行了实验根据原理图&#xff0c;如下图&#xff1a; 我进行仿真&#xff0c;在仿真的过程中&#xff0c;我向电路图中添加了外部的置0/1端口&#xff0c;由此在proteus中得到下面的电路图 …

虹科技术|PCAN网关设备:打通通信壁垒,LED指示灯编程示例

导读&#xff1a;在工业自动化、汽车、机械等行业&#xff0c;CAN总线协议被广泛应用。随着技术的发展&#xff0c;CAN FD&#xff08;CAN with Flexible Data-Rate&#xff09;应运而生&#xff0c;作为传统CAN的升级版&#xff0c;它具有更高的通信波特率和更长的数据帧&…

自监督深度学习技术

一、定义 自监督学习&#xff08;SSL&#xff09;是机器学习的一种范式&#xff0c;用于处理未标记数据以获取有用的表示&#xff0c;以帮助下游学习任务。SSL方法最显著的特点是它们不需要人类标注的标签&#xff0c;这意味着它的训练完全基于由未标记的数据样本组成的数据集…

移动通信原理与关键技术学习(3)

1.什么是相干解调&#xff1f;什么是非相干解调&#xff1f;各自的优缺点是什么&#xff1f; 相干解调需要在接收端有一个与发送端一样的载波&#xff08;同样的频率和相位&#xff09;&#xff0c;在接收端的载波与发送端载波进行互相关操作&#xff0c;去除载波的影响。相干…