当前位置: 首页 > news >正文

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

文章目录

  • 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图片)等。

http://www.lryc.cn/news/278683.html

相关文章:

  • rknn加载onnx时报错 GLIBC=2.29 no found librknnc.so
  • ASP .net core微服务实战(杨中科)
  • 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架
  • VUE+bpmn.js实现工作流
  • 微信小程序Burp抓包
  • 基础篇_面向对象(什么是对象,对象演化,继承,多态,封装,接口,Service,核心类库,异常处理)
  • 【一、测试基础】Java基础语法
  • 社交距离 - 华为OD统一考试
  • Odrive 学习系列一:vscode 编译Odrive
  • Pandas实战100例 | 案例 21: 条件运算
  • Unity组件开发--长连接webSocket
  • 书客、柏曼、松下护眼台灯哪款更靠谱?实测核心数据对比PK!
  • MQTT协议
  • Unity编辑器扩展(外挂)
  • oracle 19c容器数据库data dump数据泵传输数据(2)---11g导19c
  • Java-网络爬虫(二)
  • 【android】rk3588-android-bt
  • 如何在 Microsoft Edge 浏览器中启用自动刷新
  • Redis之集群方案比较
  • WPF 布局
  • #Uniapp:uni-app中vue2生命周期--11个
  • pytorch 分布式 Node/Worker/Rank等基础概念
  • 《动手学深度学习》学习笔记 第8章 循环神经网络
  • 腾讯实验平台基于 StarRocks 构建湖仓底座
  • 【基础工具篇使用】ADB 的安装和使用
  • 数字图像处理练习题
  • 开关电源PFC电路原理详解及matlab仿真
  • SpringBoot+Hutool实现图片验证码
  • 【MySQL】MySQL版本8+ 窗口函数 Lead 的两种使用
  • Hive 的 安装与使用