• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Elephant
程序猿
博客园    首页    新随笔    联系   管理    订阅  订阅
Expect:100-continue

在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为俩步,

1   发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据
2   接收到Server返回的100-continue应答以后, 才把数据POST给Server
3  

这是libcurl的行为.

具体的RFC相关描述: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3

于是,这样就有了一个问题, 并不是所有的Server都会正确应答100-continue, 比如lighttpd, 就会返回417 “Expectation Failed”, 则会造成逻辑出错,,

要解决的办法也挺容易:

1  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
2 
3 // Disable Expect: header (lighttpd does not support it)

转自:http://www.laruence.com/2011/01/20/1840.html

posted on 2013-07-18 08:51  fanelephant  阅读(579)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3