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手册
原文地址:https://www.cnblogs.com/bourneli/p/2818655.html