PHP获取原始http请求headers和body

目的

为什么要获取原始的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手册
posted @ 2012-12-14 20:52  bourneli  阅读(18419)  评论(3编辑  收藏  举报