送信者/受信者サイクルの応答部分でエラーが発生します。
これは送信者(適切なリクエストを送信しない)の問題である可能性が非常に高いですが、受信側のPHPスクリプトの設定ミスが原因である可能性もあります。つまり、要求が正しい場合でも、受信者は利用できない可能性がHTTP_RAW_POST_DATA
あります。
参照:http ://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data
生のPOSTデータを含む$HTTP_RAW_POST_DATAを常に入力します。それ以外の場合、変数には認識されないMIMEタイプのデータのみが入力されます。ただし、生のPOSTデータにアクセスするための推奨される方法はphp://inputです。$ HTTP_RAW_POST_DATAは、enctype = "multipart/form-data"では使用できません。
したがって、最初に確認するの$HTTP_RAW_POST_DATA
は、実際にデータが入力されているかどうかです。これには、上のページから次のいずれかが必要です。
- .ini変数
always_populate_raw_post_data
はTrueであり、
Content-Type
または、 POSTハンドラーが認識しないとPOSTが送信されます(「text / raw」を使用できる可能性があります)
この時点で、データを送信する正しい方法は次のようになります。
curl_setopt($handle, CURLOPT_POSTFIELDS, urlencode('Raw POST data'));
ただし、これらのデータを受信するための推奨される方法は、まったく依存せず$HTTP_RAW_POST_DATA
、仮想ファイルの内容を読み取ることであることに注意してくださいphp://input
。
php:// inputは、リクエスト本文から生データを読み取ることができる読み取り専用ストリームです。POSTリクエストの場合、$HTTP_RAW_POST_DATA
特別なphp.iniディレクティブに依存しないため、代わりにphp://inputを使用することをお勧めします。さらに、$ HTTP_RAW_POST_DATAがデフォルトで設定されていない場合は、always_populate_raw_post_dataをアクティブ化するよりもメモリ消費量が少ない可能性があります。