HTTP/1.1 协议 Expect: 100 -continue 分析与禁用

这篇博客详细介绍了HTTP/1.1协议中的Expect: 100-continue机制,讨论了libcurl在发送大量数据时如何使用该机制,并指出其可能带来的延迟问题。同时,文中还提供了在C#中禁用这一特性的方法。读者将了解到这一特性如何影响客户端与服务器之间的交互,以及如何处理不支持此特性的服务器。

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

1、基础知识背景

1.1 “Expect: 100-continue”的是什么:
  HTTP/1.1 协议里,设计 100 - continue HTTP 状态码的,目的是为了在 client 发送 Request Message 之前, HTTP/1.1 协议允许 client 判定服务器是否愿意 接受 client 的消息主体(基于 Request Message )。
  如果 client 预期等待 100-continue 应答,那么它发送的请求必须包含一个 Expect: 100 -continue 的头域。

2、Expect: 100-continue 来龙去脉

2.1 libcurl 发送大于1024字节数据时启用“Expect:100-continue‘特性:
2.2 这也就是 Laruence 在 2011 年撰文所写的:
  在使用 curl 做 POST 的时候,当要POST 的数据大于 1024 字节的时候,curl 并不会直接就发起 POST 请求,而是会分为两步:
  发送一个请求,包含一个 “Expect:100-continue” 头域,询问 Server 是否愿意接收数据;
  接收到 Server 返回的100-continue 应答以后,才把数据 POST 给Server;
这是 libcurl 的行为。

2.3 zxgfa在 2012年补充说:
  libcurl在发送大于1024 字节的 POST 请求时采用了这种方法,但是相对的,它会引起请求延迟的加大。
  并不是所有的 web server 都能正确处理并应答“100-continue”&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值