1.取得要求ライン:メソッド、URI、プロトコル
次の3つの変数の値は、スーパー変数$ _SERVERから入手できます。
$ _SERVER [ 'REQUEST_METHOD']。」」。$ _SERVER [ 'REQUEST_URI']。」」。$ _SERVER [ 'SERVER_PROTOCOL'] "\ rを\ n"は。
2.すべてのヘッダを取得します
PHP)は、(組み込み関数のgetallheaderを有している、は、apache_request_headers()関数であり、すべてのヘッダHTTP要求が配列として返されることがあり、別名です。ただし、この機能はApacheのみ、nginxの中で働くことができるか、コマンドラインであれば、直接存在しない誤差関数に報告されます。
より一般的な方法は、超変数$ _SERVERから抽出され、キーは、関連するヘッダー「HTTP_」の始まりである、あなたは、この機能に応じて、すべてのヘッダを取得することができます。
具体的なコードは次のよう:
関数get_all_headers(){ $ヘッダー = 配列(); foreachの($ _SERVER として $キー => $値){ 場合(SUBSTR($キー、0、5)=== 'HTTP_' ){ $キー =のSUBSTR($キー、5 )。 $キー = strtolower($キー)。 $キー = str_replace( '_'、 ''、$キー)。 $キー = ucwords($キー)。 $キー = str_replace(」」、 ' - '、$キー)。 $ヘッダー [ $キー ] = $値。 } } を返す $ヘッダを。 }
3.ボディ製
それはつまり、公式のリクエストボディを得るための方法を提供します。
file_get_contents( 'PHP://入力')
4.最後の完全なコードは次のよう:
/ * * *获取HTTP请求原文 * @return列 * / 関数get_http_raw(){ $生 = '' ; // (1)请求行 $生。= $ _SERVER [ 'REQUEST_METHOD']。」」。$ _SERVER [ 'REQUEST_URI']。」」。$ _SERVER [ 'SERVER_PROTOCOL'] "\ rを\ n"は。; // (2)请求ヘッダ foreachの($ _SERVER として $キー => $値){ 場合(SUBSTR($キー、0、5)=== 'HTTP_'、5 )。 $キー = str_replace( '_'、 ' - '、$キー)。 $生。= $キー。 ':'。$値。 "\ rを\ n"は、 } } // (3)空行 $生 = "\ R \ n"。; // (4)请求ボディ $生 =。のfile_get_contents( 'PHP://入力' ); 返す $生を。 }