使用PHP得到所有的HTTP请求头_还有应答头
1)如何获取 客户端请求的头部
参考网站:
http://www.neatstudio.com/show-377-1.shtml
PHP中一般采用getallheaders来获取头部,但事实上,有些模式下是获取不到的(以前真没有注意过在fastcgi下这个函数不能用,当然我现在也没有测试。是老王说的)
他说:
在PHP里,想要得到所有的HTTP请求头,可以使用getallheaders方法,不过此方法并不是在任何环境下都存在,比如说,你使用fastcgi方式运行PHP的话,就没有这个方法,所以说我们还需要考虑别的方法,幸运的是$_SERVER里有我们想要的东西,它里面键名以HTTP_开头的就是HTTP请求头:
$headers = array();
foreach ($_SERVER as $key => $value) {
if ('HTTP_' == substr($key, 0, 5)) {
$headers[str_replace('_', '-', substr($key, 5))] = $value;
}
}
代码很简单,需要说明的是RFC里明确指出了信息头的名字是不区分大小写的。
2)如果php脚本作为http客户端,用curl去请求远端 服务器,那么如何获取 http响应消息 的应答头!
代码如下:
<?php
$xml = <<<'EOF'
<?xml version="1.0" encoding="UTF-8" ?>
<body>
<keyword>3333</keyword>
<order>0</order>
<pagesize>10</pagesize>
<pagenum>1</pagenum>
<corporation_id>3398351028</corporation_id>
</body>
EOF;
$PublicAccountServerIP = "218.205.81.33";
$header[]="Host: $PublicAccountServerIP";
$header[]="Accept-Encoding: gzip";
$header[]="Content-Type: text/xml";
//自定义头部--start
$header[]="msgname: getpubliclist";
$header[]="version: 1.0.0";
$header[]="userid: +8618867101652_3398351028@li726-26";
$header[]="AuthType:httpdigest";
//自定义头部--end
$header[]="Content-Length: ".strlen($xml);
$url = "http://$PublicAccountServerIP/padata/eclient/msg";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_HEADER, 0); #必须把应答头开启
curl_setopt($ch, CURLOPT_HEADER, 1); #头部有result: 000000 字段,表示应答请求信息,参考接口说明
$ret = curl_exec($ch);
$headSize = curl_getinfo($ch,CURLINFO_HEADER_SIZE); #获取头部数据大小,此项必须增加进来
curl_close($ch);
$strHead = substr($ret,0,$headSize-2); # \r\n多余
$strBody = substr($ret,$headSize);
echo $strHead;
echo "\r\n";
echo $strBody;
echo "\r\n";
echo getHttpField($strHead,'result');
//获取http请求头部的某个头域的值
function getHttpField($strHead,$strField){
if(!$strHead || !$strField){return null;}
$arr = explode("\r\n",$strHead);
foreach($arr AS $v){
$pos = strpos($v,':');
if($pos){
$field = substr($v,0,$pos);
$value = trim(substr($v,$pos+1));
if( $field == $strField){
return $value;
}
}
}
return null;
}
?>
重要说明:
使用PHP得到所有的HTTP请求头_还有应答头的更多相关文章
- HTTP协议请求头信息和响应头信息
阅读目录 http的请求部分 常用请头信息 常用响应头信息 http的请求部分 基本结构 请求行 GET /test/hello.html HTTP/1.1 消息头(并不是每一次请求都一样) 空行 ...
- php设置http请求头信息和响应头信息
php设置http请求头信息和响应头信息 设置请求服务器的头信息可以用fsockopen,curl组件,header函数只能用来设置客户端响应的头信息,不能设置服务器的头信息. 例子; 一.head ...
- HTTP消息头(HTTP headers)-HTTP请求头与HTTP响应头
感谢大佬:https://itbilu.com/other/relate/E1T0q4EIe.html HTTP协议将传输的信息分隔为两部分:HTTP信息头.HTTP信息体.通过HTTP头信息,使客户 ...
- Linux企业级项目实践之网络爬虫(12)——处理HTTP应答头
Web服务器的HTTP应答一般由以下几项构成:一个状态行,一个或多个应答头,一个空行,内容文档.设置HTTP应答头往往和设置状态行中的状态代码结合起来.例如,有好几个表示"文档位置已经改变& ...
- HTTP详解教程 / HTTP 响应头信息 HTTP 响应头信息
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息. 在本章节中我们将具体来介绍HTTP响应头信息.直线电机哪家好 应答头 说明 Allow 服务器支持哪些请求方法(如GET.POST等). ...
- IP头,TCP头,UDP头,MAC帧头定义(转)
源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...
- IP头,TCP头,UDP头,MAC帧头定义
一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; // ...
- C/C++头文件以及避免头文件包含造成的重定义方法
C 头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处 ...
- 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件
补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...
随机推荐
- Unity3d NGUI的使用(九)(UIScrollView制作滑动列表)
UIScrollView制作滑动列表,可横向,竖直展示一些列表在固定可视范围内 UIScrollVIew只是一个可滑动的UI组件 如果需要制作复杂的可视区域UI需要配合使用UIPanel与UIGrid ...
- 二十四种设计模式:状态模式(State Pattern)
状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...
- Google Proposes to Enhance JSON with Jsonnet
Google has open sourced Jsonnet, a configuration language that supersedes JSON and adds new features ...
- linux xargs参数
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...
- pt-heartbeat使用实践
今天无意中看到了沃趣网络科技的一篇文章请不要用SECONDS_BEHIND_MASTER来衡量MYSQL主备的延迟时间感觉分析的相当不错,该文章中也提到了使用pt-heartbeat这个工具检测主从延 ...
- R提高篇(五): 描述性统计分析
数据作为信息的载体,要分析数据中包含的主要信息,即要分析数据的主要特征(即数据的数字特征), 对于数据的数字特征, 包含数据的集中位置.分散程度和数据分布,常用统计项目如下: 集中趋势统计量: 均值 ...
- Hive(六):HQL DDL
HQL语法基于 SqlLine(http://sqlline.sourceforge.net/),DDL主要包含数据库.函数.视图的创建.修改.删除,参考资料:(https://cwiki.apach ...
- js调用ajax
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- c# 可以设置透明度的 Panel 组件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- jQuery点击图片弹出放大可拖动图片查看
CSS代码: .popup-bigic { position: absolute; ; ; background: #eee; overflow: hidden; ; } .popup-bigic . ...