首頁 後端開發 php教程 RCA:未注意Curl-library Post 1024以上字节时的HTTP/1.1特性导致 HessianPHP 传_PHP教程

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

Jul 20, 2016 am 11:16 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>     http://www.bkjia.com/uploads/allimg/131115/1924212144-0.png     图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;
赠图几枚: 请施主拿去: http://www.bkjia.com/uploads/allimg/131115/192421OE-1.jpg 360度后空翻开球: http://www.bkjia.com/uploads/allimg/131115/192421A55-2.gif 360无死角: http://www.bkjia.com/uploads/allimg/131115/19242163a-3.jpg  

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440146.htmlTechArticle先列出 HessianPHP 的错误提示: 基础知识背景: 1)Expect: 100-continue的来龙去脉: HTTP/1.1 协议里设计100 (Continue) HTTP 状态码的的目的是,在客...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++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 22, 2024 am 10:42 AM

PHP是一種廣泛應用於網站開發的程式語言,而頁面跳躍並攜帶POST資料是在網站開發中常見的需求。本文將介紹如何實現PHP頁面跳轉並攜帶POST數據,包括具體的程式碼範例。在PHP中,頁面跳躍一般透過header函數實現。如果需要在跳轉過程中攜帶POST數據,可以透過以下步驟完成:首先,建立一個包含表單的頁面,使用者在該頁面填寫資訊並點擊提交按鈕。在表單的acti

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

您可以使用RCA通用遙控器簡化遙控器管理。透過各種型號,您最多可以控制八台設備,消除了對多個遙控器的需要,並減少了混亂。耐心地對遙控器進行編程,並按照提供的簡單步驟操作。所以,如果你想使用程式碼來設定RCA通用遙控器,這篇文章是為你準備的。如何使用程式碼設定RCA通用遙控器要使用程式碼設定RCAUniversal遙控器,請使用下列方法之一。使用自動程式設計方法對RCA通用遙控器進行程式設計使用直接程式碼對RCA通用遙控器進行程式設計讓我們詳細地談一談。 1]使用自動程式設計方法對RCA通用遙控器進行程式設計我們首先要採用一種簡

PHP程式碼範例:如何用POST方式傳參並實現頁面跳轉 PHP程式碼範例:如何用POST方式傳參並實現頁面跳轉 Mar 07, 2024 pm 01:45 PM

標題:PHP程式碼範例:使用POST方式傳參並實現頁面跳轉的方法在Web開發中,經常涉及如何透過POST方式傳遞參數,並在伺服器端進行處理後實現頁面跳轉的需求。 PHP作為一種流行的伺服器端腳本語言,提供了豐富的函數和語法來實現這一目的。以下將透過一個實際的範例來介紹如何使用PHP來實現這項功能。首先,我們需要準備兩個頁面,一個用來接收POST請求並處理參數

Golang中有類似類別的物件導向特性嗎? Golang中有類似類別的物件導向特性嗎? Mar 19, 2024 pm 02:51 PM

在Golang(Go語言)中並沒有傳統意義上的類別的概念,但它提供了一種稱為結構體的資料類型,透過結構體可以實現類似類別的物件導向特性。在本文中,我們將介紹如何使用結構體實現物件導向的特性,並提供具體的程式碼範例。結構體的定義和使用首先,讓我們來看看結構體的定義和使用方式。在Golang中,結構體可以透過type關鍵字定義,然後在需要的地方使用。結構體中可以包含屬

HTTP 503錯誤怎麼解決 HTTP 503錯誤怎麼解決 Mar 12, 2024 pm 03:25 PM

解決方法:1、重試:可等待一段時間後重新嘗試,或重新嘗試頁面;2、檢查伺服器負載:檢查伺服器的CPU、記憶體和磁碟使用情況,如果超過了容量限制,可嘗試最佳化伺服器設定或增加伺服器資源;3、檢查伺服器維護與升級:在伺服器恢復正常之前,只能等待;4、檢查網路連線:確保網路連線穩定,檢查網路設備、防火牆或代理設定是否正確;5、確保快取或CDN配置正確;6、聯絡伺服器管理員等等。

See all articles