http 请求怎么确定边界?

本文介绍了S3的PUT和POST请求上传方式,重点讨论了HTTP如何确定数据边界,包括Content-Length和Transfer-Encoding: chunked两种方式,并详细分析了四种不同情况的处理策略,确保服务器正确识别HTTP消息体的边界。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

S3 上传有两种 method 方式

  1. PUT 请求:这个上传请求上传对象协议明确携带 Content-length 的;
  2. POST 请求:这个不要求知名 Content-length,而是通过一种流式的数据传输,但是总归还是要知道边界在哪里?有以下几种方式让服务端知道数据的边界;

HTTP 数据怎么确定边界?

HTTP边界判定由于http1.1协议之后,http可以是一个keep-alive的,可以是一个流式协议。那么我们需要有办法去标识body边界,有三种方式:

  1. http包头部显式设置 Content-Length
  2. http传输编码方式用 Transfer-Encoding: chunked
  3. 短连接(连接断开)
    1. (第3种情况,一般作为异常场景看待。所以下面我们就讨论前两种情况)

这两种情况都取决于客户端的协议准守。正常情况,如果传输了Content-Length,就要和body一致。如果头部没有这个字段,那么也可以客户端采用Transfer-Encoding:chunked的编码方式传输body,也能让服务器正确的识别body的边界。

分四种情况讨论

情况一:如果只设置了Content-Length,但是body不准,怎么办?

  1. Content-Length比body大?
    1. 服务一般是卡主&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值