ホームページ >バックエンド開発 >PHPチュートリアル >RCA: Curl-library Post が 1024 バイトを超える場合の HTTP/1.1 特性に注意を払わないと、HessianPHP 送信_PHP チュートリアルが発生する

RCA: Curl-library Post が 1024 バイトを超える場合の HTTP/1.1 特性に注意を払わないと、HessianPHP 送信_PHP チュートリアルが発生する

WBOY
WBOYオリジナル
2016-07-20 11:16:021225ブラウズ

最初に HessianPHP のエラー メッセージをリストします:


基本的な知識の背景: 1) 「Expect: 100-Continue」の詳細: HTTP/1.1 プロトコルで 100 (継続) HTTP ステータス コードを設計する目的は、クライアントが要求メッセージを送信する前に、HTTP/1.1 プロトコルでは、サーバーが送信されたメッセージ本文を受け入れるかどうかをクライアントが最初に判断できるようにすることです。クライアントによって (リクエスト ヘッダーに基づいて)。 つまり、クライアントとサーバーは、(より大きな) データを投稿する前に双方が「ハンドシェイク」することを許可し、それらが一致する場合、クライアントは (より大きな) データの送信を開始します。 その理由は、クライアントがリクエスト データを直接送信してもサーバーがリクエストを拒否した場合、この動作により大量のリソース オーバーヘッドが発生するためです。 ​ HTTP/1.1 クライアントのプロトコル要件は次のとおりです。
のヘッダー! ​
2) libcurl は、1024 バイトを超えるデータを送信するときに「Expect:100-Continue」機能を有効にします。

1. 「Expect: 100- continue」ヘッダー フィールドを含むリクエストを送信し、サーバーにデータを受信するかどうかを尋ねます。 2. サーバーから返された 100-Continue 応答を受信した後、データがサーバーに POST されます。

zxgfa は 2012 年に追加されました:

(Zheng Yun の注 1: lighttpd

1.4 バージョンにはこの深刻な問題がありますが、バージョン 1.5 では修正されています。 Zheng Yun 注 2: レジンは、バージョン 3.0.5 で Expect: 100-Continue のサポートを追加しました。 )

3) PHP Curl ライブラリはこの機能をアクティブにブロックできます: 誰かが PHP Manual::curl_setopt の下に次のようなメッセージを残しました。 PHPカールはlibcurlの特性に準拠しています。すべての Web サーバーがこの機能をサポートしているわけではないため、さまざまなエラーが発生する可能性があります。この問題が発生した場合は、次のコマンドを使用して「Expect」ヘッダー フィールドをブロックできます。 <span class="html"><span class="default"> <?php <code><span class="html"><span class="default">    <?php </span></span></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> <span class="html"><span class="default">curl_setopt<img class="decoded" src="RCA:%20Curl-library%20Post%20%E3%81%8C%201024%20%E3%83%90%E3%82%A4%E3%83%88%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%20HTTP/1.1%20%E7%89%B9%E6%80%A7%E3%81%AB%E6%B3%A8%E6%84%8F%E3%82%92%E6%89%95%E3%82%8F%E3%81%AA%E3%81%84%E3%81%A8%E3%80%81HessianPHP%20%E9%80%81%E4%BF%A1_PHP%20%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B" alt="RCA: Curl-library Post が 1024 バイトを超える場合の HTTP/1.1 特性に注意を払わないと、HessianPHP 送信_PHP チュートリアルが発生する"><span class="keyword">(<hr> <span class="default">$ch<strong><span class="keyword"> ,</span></strong> <ul> <li><span class="default">CURLOPT_HTTPHEADER</span></li> <span class="keyword">, array(</span> </ul> <span class="string">'Expect:'<hr> <span class="keyword">)); <strong></strong><span class="default"> ?><br><blockquote hessian post><span><strong></strong></span></blockquote></span></span></span></span></span></span></span>
図 1 明示的なリクエスト ヘッダーを設定することで、PHP のカール バックエンドに 100 回継続動作を停止させることができます ​
RCA: Curl-library Post が 1024 バイトを超える場合の HTTP/1.1 特性に注意を払わないと、HessianPHP 送信_PHP チュートリアルが発生するその他の知識の背景: RCA: Curl-library Post が 1024 バイトを超える場合の HTTP/1.1 特性に注意を払わないと、HessianPHP 送信_PHP チュートリアルが発生する RCA: Curl-library Post が 1024 バイトを超える場合の HTTP/1.1 特性に注意を払わないと、HessianPHP 送信_PHP チュートリアルが発生する

HessianTransport コードによると、「CURL ライブラリを使用した Hessian リクエスト」です。

問題現象: ​ 解決策: CURLOPT 項目をヘシアンで変更します。 CURLOPT_HTTPHEADER => array("Content-Type: application/binary") への変更 CURLOPT_HTTPHEADER => array("Content-Type: application/binary","Expect:") 追記: HTTP/1.0 プロトコルに変更すると、この 100 継続の問題を回避できると考える人もいますが、これは原理を理解しようとしないエンジニアの弱点の表れにすぎません。 ​ 参考リソース: 1) 2011 年、ラルエンス、予想:100-継続; 2) PHP マニュアル。POST を実行していて、コンテンツの長さが 1,025 以上の場合。 3) HTTP 1.1 RFC、100 (継続) ステータスの使用。 4) stackoverflow、2009、cURL データ > 1024 の場合、PHP HTTP POST が失敗します。 5) zxgfa、2012、libcurl の使用法の問題「Expect100-Continue」。 6) lighttpd、2009、「Expect」ヘッダーにより HTTP エラー 417 が発生します。 無料の写真をいくつか: ドナーにそれを受け取るように依頼してください。 360 度バックフリップ キックオフ: 360 度死角なし:
http://www.bkjia.com/PHPjc/440146.html
🎜www.bkjia.com🎜🎜tru​​e🎜🎜http://www.bkjia.com/PHPjc/440146.html🎜🎜技術記事🎜🎜まず HessianPHP のエラー メッセージをリストしてみましょう: 基本的な知識の背景: 1) Expect の詳細: 100-Continue: HTTP/1.1 プロトコルで 100 (Continue) HTTP ステータス コードを設計する目的は...🎜 🎜🎜🎜 🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。