首页 php教程 php手册 RCA:未注意Curl-library Post 1024以上字节时的HTTP/1.1特性导致 HessianPHP 传

RCA:未注意Curl-library Post 1024以上字节时的HTTP/1.1特性导致 HessianPHP 传

Jun 13, 2016 am 11:31 AM
http post rca 导致 注意 特性

先列出 HessianPHP 的错误提示:


基础知识背景: 1)“Expect: 100-continue”的来龙去脉:     HTTP/1.1 协议里设计 100 (Continue) HTTP 状态码的的目的是,在客户端发送 Request Message 之前,HTTP/1.1 协议允许客户端先判定服务器是否愿意接受客户端发来的消息主体(基于 Request Headers)。     即,Client 和 Server 在 Post (较大)数据之前,允许双方“握手”,如果匹配上了,Client 才开始发送(较大)数据。     这么做的原因是,如果客户端直接发送请求数据,但是服务器又将该请求拒绝的话,这种行为将带来很大的资源开销。       协议对 HTTP/1.1 clients 的要求是:
 的头域!  
2)libcurl 发送大于1024字节数据时启用“Expect:100-continue‘特性:

1. 发送一个请求,包含一个 "Expect: 100-continue" 头域,询问 Server 是否愿意接收数据; 2. 接收到 Server 返回的 100-continue 应答以后,才把数据 POST 给 Server;

 

    zxgfa 在 2012年补充说:

(郑昀注1:lighttpd 1.4 版本有此严重问题,于1.5版本修复。 郑昀注2:Resin 于 3.0.5 版本增加了对 Expect: 100-continue 的支持。)

 

3)PHP Curl-library 可以主动封禁此特性:     有人在 PHP手册::curl_setopt 下留言说:     PHP curl 遵从 libcurl 的特性。由于不是所有 web servers 都支持这个特性,所以会产生各种各样的错误。如果你遇到了,可以用下面的命令封禁"Expect"头域:     <span class="html"><span class="default">    <?php </span></span></span> <span class="html"><span class="default">    curl_setopt</span><span class="keyword">(</span><span class="default">$ch</span><span class="keyword">,<span class="Apple-converted-space"> </span></span><span class="default">CURLOPT_HTTPHEADER</span><span class="keyword">, array(</span><span class="string">'Expect:'</span><span class="keyword">));<br></span><span class="default">    ?><br></span><span pooy><br></span></span>         图1 You can convince PHP's curl backend to stop doing the 100-continue-thing by setting an explicit request header  
其他知识背景:
  • 根据 HessianTransport 代码所述,”Hessian request using the CURL library“。

问题现象:
,hessian 报错“CURL transport error: transfer closed with outstanding read data remaining”。
  解决: 修改hessian中 CURLOPT 项: CURLOPT_HTTPHEADER => array("Content-Type: application/binary")  改为 CURLOPT_HTTPHEADER => array("Content-Type: application/binary","Expect:") 
p.s.:     有人认为改为 HTTP/1.0 协议即可绕过这个 100-continue 问题,但这只是工程师不愿意搞清楚原理而示弱的表现。   参考资源: 1)2011,Laruence,Expect:100-continue; 2)PHP手册,If you are doing a POST, and the content length is 1,025 or greater; 3)HTTP 1.1 RFC,Use of the 100 (Continue) Status; 4)stackoverflow,2009,PHP HTTP POST fails when cURL data > 1024; 5)zxgfa,2012,libcurl的使用问题“Expect100-continue”; 6)lighttpd,2009,'Expect' header gives HTTP error 417;
赠图几枚: 请施主拿去: 360度后空翻开球: 360无死角:  

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

理解网页重定向的常见应用场景并了解HTTP301状态码 理解网页重定向的常见应用场景并了解HTTP301状态码 Feb 18, 2024 pm 08:41 PM

掌握HTTP301状态码的含义:网页重定向的常见应用场景随着互联网的迅猛发展,人们对网页交互的要求也越来越高。在网页设计领域,网页重定向是一种常见且重要的技术,通过HTTP301状态码来实现。本文将探讨HTTP301状态码的含义以及在网页重定向中的常见应用场景。HTTP301状态码是指永久重定向(PermanentRedirect)。当服务器接收到客户端发

MySQL中.ibd文件的作用详解及相关注意事项 MySQL中.ibd文件的作用详解及相关注意事项 Mar 15, 2024 am 08:00 AM

MySQL中.ibd文件的作用详解及相关注意事项MySQL是一种流行的关系型数据库管理系统,数据库中的数据存储在不同的文件中。其中,.ibd文件是InnoDB存储引擎中的数据文件,用于存储表中的数据和索引。本文将对MySQL中.ibd文件的作用进行详细解析,并提供相关代码示例以帮助读者更好地理解。一、.ibd文件的作用:存储数据:.ibd文件是InnoDB存

如何使用C++实现HTTP流传输? 如何使用C++实现HTTP流传输? May 31, 2024 am 11:06 AM

如何在C++中实现HTTP流传输?使用Boost.Asio和asiohttps客户端库创建SSL流套接字。连接到服务器并发送HTTP请求。接收HTTP响应头并打印它们。接收HTTP响应正文并打印它。

PHP代码示例:如何用POST方式传参并实现页面跳转 PHP代码示例:如何用POST方式传参并实现页面跳转 Mar 07, 2024 pm 01:45 PM

标题:PHP代码示例:使用POST方式传参并实现页面跳转的方法在Web开发中,经常会涉及到如何通过POST方式传递参数,并在服务器端进行处理后实现页面跳转的需求。PHP作为一种流行的服务器端脚本语言,提供了丰富的函数和语法来实现这一目的。下面将通过一个实际的示例来介绍如何使用PHP来实现这一功能。首先,我们需要准备两个页面,一个用来接收POST请求并处理参数

HTTP 503错误怎么解决 HTTP 503错误怎么解决 Mar 12, 2024 pm 03:25 PM

解决方法:1、重试:可等待一段时间后重新尝试,或者刷新页面;2、检查服务器负载:检查服务器的CPU、内存和磁盘使用情况,如果超过了容量限制,可尝试优化服务器配置或增加服务器资源;3、检查服务器维护和升级:在服务器恢复正常之前,只能等待;4、检查网络连接:确保网络连接稳定,检查网络设备、防火墙或代理设置是否正确;5、确保缓存或CDN配置正确;6、联系服务器管理员等等。

PHP跳转页面并携带POST数据的实现方法 PHP跳转页面并携带POST数据的实现方法 Mar 22, 2024 am 10:42 AM

PHP是一种广泛应用于网站开发的编程语言,而页面跳转并携带POST数据是在网站开发中常见的需求。本文将介绍如何实现PHP页面跳转并携带POST数据,包括具体的代码示例。在PHP中,页面跳转一般通过header函数实现。如果需要在跳转过程中携带POST数据,可以通过以下步骤完成:首先,创建一个包含表单的页面,用户在该页面填写信息并点击提交按钮。在表单的acti

Golang中有类似类的面向对象特性吗? Golang中有类似类的面向对象特性吗? Mar 19, 2024 pm 02:51 PM

在Golang(Go语言)中并没有传统意义上的类的概念,但它提供了一种称为结构体的数据类型,通过结构体可以实现类似类的面向对象特性。在本文中,我们将介绍如何使用结构体实现面向对象的特性,并提供具体的代码示例。结构体的定义和使用首先,让我们看一下结构体的定义和使用方式。在Golang中,结构体可以通过type关键字定义,然后在需要的地方使用。结构体中可以包含属

如何使用代码配置RCA通用遥控器? 如何使用代码配置RCA通用遥控器? Feb 21, 2024 am 10:03 AM

您可以使用RCA通用遥控器简化遥控器管理。通过各种型号,您最多可以控制八台设备,消除了对多个遥控器的需要,并减少了混乱。耐心地对遥控器进行编程,并按照提供的简单步骤操作。所以,如果你想使用代码配置RCA通用遥控器,这篇文章是为你准备的。如何使用代码配置RCA通用遥控器要使用代码配置RCAUniversal遥控器,请使用以下方法之一。使用自动编程方法对RCA通用遥控器进行编程使用直接代码对RCA通用遥控器进行编程让我们详细地谈一谈。1]使用自动编程方法对RCA通用遥控器进行编程我们首先要采用一种简

See all articles