目的
為什么要獲取原始的http請求的頭部和body呢?php內置對象$_SERVER,$_POST,$_GET,$_COOKIE等不就是為了簡化處理原始頭部而抽象出來的對象嗎?
一般的應用場景而言,的確不需要原始頭部信息,但是如果需要定位bug(如cookie異常丟失),或者分析用戶的行為,如主流用戶的客戶端版本(IE,FF,Chrome或其他),那么獲取原始的請求有助於數據分析。下面介紹兩種方法,作為備忘,方法1本人已經實驗證明可行。
方法1
- apache_request_headers,此函數返回headers的關聯數組,必須在apahce下
- @file_get_contents('php://input'),此方法返回body。
參考這里:http://stackoverflow.com/a/10751214
方法2
采用pecl_http擴展中的相關api,這個擴展不在php自帶的擴展中,需要另行下載
- http_get_request_headers,返回值與apache_request_headers一樣
- http_get_request_body或http_get_request_body_stream,具體用法參見php手冊