この記事では、主にphpがcurlを使用する場合のExpect:100- continueの解決策を紹介し、例を用いてExpect:100- continueの原理と解決策を分析します。必要な友達は参考値を参照してください
この記事の例では、PHP でカールを使用する場合の Expect:100-Continue の解決策について説明します。参考のためにみんなで共有してください。詳細は以下の通りです
curl POST データを使用する場合、POST データが 1024 バイトより大きい場合、curl は POST リクエストを直接開始しません。代わりに、2 つのステップで実行されます。
1. ヘッダーに Expect:100- continue を含むリクエストを送信し、サーバーにデータを受け入れるかどうかを尋ねます。
2. サーバーから返された 100-Continue 応答を受信した後、データをサーバーに POST します。
これは libcurl によって定義されています。詳細については、関連する説明を参照してください: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
そこで問題が発生します。すべてのサーバーが 100-Continue で応答するわけではありません。たとえば、lighttpd は「417 Expectation Fail」を返し、論理エラーが発生します。
解決策は次のとおりです: リクエストを送信するとき、ヘッダーには空の Expect が含まれます。
?
1 |
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:")); |
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。