转:http://blog.sina.com.cn/s/blog_5f54f0be0102uvxu.html
PHP--获取响应头(Response Header)方法
方法一:
==========================================
$baiduUrl = "http://www.baidu.com/link?url=LZE_J6a1AcieLlTzNxUZQVpe2trQ99zx1ls85ux8dXaGlFB3eiEm_Y6SJC1sNQf_";
file_get_contents($baiduUrl);
$responseInfo = $http_response_header;
print_r($responseInfo);
// 输出:
Array
(
[0] => HTTP/1.1 302 Found
[1] => Date: Fri, 27 Jun 2014 02:47:35 GMT
[2] => Server: Apache
[3] => Location: http://www.edeng.cn/s/chuna/
[4] => Cache-Control: max-age=86400
[5] => Expires: Sat, 28 Jun 2014 02:47:35 GMT
[6] => Content-Length: 212
[7] => Connection: Close
[8] => Content-Type: text/html; charset=iso-8859-1
[9] => HTTP/1.1 200 OK
[10] => Server: nginx/1.4.3
[11] => Date: Fri, 27 Jun 2014 02:47:35 GMT
[12] => Content-Type: text/html; charset=utf-8
[13] => Connection: close
[14] => Expires: Mon, 26 Jul 1997 05:00:00 GMT
[15] => Last-Modified: Fri, 27 Jun 2014 02:47:35 GMT
[16] => Cache-Control: no-store, no-cache, must-revalidate
[17] => Pragma: no-cache
[18] => Vary: User-Agent,Accept-Encoding
[19] => X-Cache: MISS from web1.edeng.cn
[20] => Via: 1.1 web1.edeng.cn:80 (squid)
)
遍历该数组即可得到相应的值。比如要想获得 Location 的值:
foreach ($responseInfo as $loop) {
if(strpos($loop, "Location") !== false){
$edengUrl = trim(substr($loop, 10));
print_r($edengUrl);
// 输出: http://www.edeng.cn/s/chuna/
}
}
方法二:
==========================================
function get_head($sUrl){
$oCurl = curl_init();
// 设置请求头, 有时候需要,有时候不用,看请求网址是否有对应的要求
$header[] = "Content-type: application/x-www-form-urlencoded";
$user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36";
curl_setopt($oCurl, CURLOPT_URL, $sUrl);
curl_setopt($oCurl, CURLOPT_HTTPHEADER,$header);
// 返回 response_header, 该选项非常重要,如果不为 true, 只会获得响应的正文
curl_setopt($oCurl, CURLOPT_HEADER, true);
// 是否不需要响应的正文,为了节省带宽及时间,在只需要响应头的情况下可以不要正文
curl_setopt($oCurl, CURLOPT_NOBODY, true);
// 使用上面定义的 ua
curl_setopt($oCurl, CURLOPT_USERAGENT,$user_agent);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
// 不用 POST 方式请求, 意思就是通过 GET 请求
curl_setopt($oCurl, CURLOPT_POST, false);
$sContent = curl_exec($oCurl);
// 获得响应结果里的:头大小
$headerSize = curl_getinfo($oCurl, CURLINFO_HEADER_SIZE);
// 根据头大小去获取头信息内容
$header = substr($sContent, 0, $headerSize);
curl_close($oCurl);
return $header;
}
如上面解析,我们可以成功获得到头信息:
HTTP/1.1 302 Found
Date: Fri, 27 Jun 2014 02:47:35 GMT
Server: Apache
Location: http://www.edeng.cn/s/chuna/
Cache-Control: max-age=86400
Expires: Sat, 28 Jun 2014 02:47:35 GMT
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
这时候,如果我们想获得 Location 项的内容,可以先把上面头正文件按回车换行切割成数组,然后再遍历匹配,如:
$responseHead = post_head($baiduUrl);
$headArr = explode("\r\n", $responseHead);
foreach ($headArr as $loop) {
if(strpos($loop, "Location") !== false){
$edengUrl = trim(substr($loop, 10));
print_r($edengUrl);
// 输出: http://www.edeng.cn/s/chuna/
}
}
- PHP--获取响应头(Response Header)方法
方法一: $baiduUrl = "http://www.baidu.com/link"; file_get_contents($baiduUrl); $responseInf ...
- 怎样获取响应头: Response Header
1. 使用 xhr.getResponseHeader()可以获取指定响应头字段值. function getHeaderTime() { console.log(this.getResponseHe ...
- 【Azure 应用服务】App Service 通过配置web.config来添加请求返回的响应头(Response Header)
问题描述 在Azure App Service上部署了站点,想要在网站的响应头中加一个字段(Cache-Control),并设置为固定值(Cache-Control:no-store) 效果类似于本地 ...
- PHP获取http头信息和CI中获取HTTP头信息的方法
CI中获取HTTP头信息的方法: $this->input->request_headers() 在不支持apache_request_headers()的非Apache环境非常有用.返回 ...
- 转:http协议学习系列(响应头---Response Headers)
HTTP最常见的响应头如下所示: ·Allow:服务器支持哪些请求方法(如GET.POST等): ·Content-Encoding:文档的编码(Encode)方法.只有在解码之后才可以得到Conte ...
- 更改TestStep的request header和获取TestStep的response header
更改TestStep的request header for example def userId = "xxxxxxxxxxxxx" def request = context.t ...
- 请求头(request headers)和响应头(response headers)解析
*****************请求头(request headers)***************** POST /user/signin HTTP/1.1 --请求方式 文件名 http ...
- axios获取响应头
[转载] 来源:https://segmentfault.com/a/1190000009125333 在用 axios 获取 respose headers 时候获取到的只有的 Object { c ...
- [面试没答上的问题1]http请求,请求头和响应头都有什么信息?
最近在找工作,面试官问了一些问题自己并没有回答上,这里做一个小结. http请求,请求头和响应头都有什么信息? 页面和服务器交互最常见的方式就是ajax,ajax简单来说是浏览器发送请求到服务端,然后 ...
随机推荐
- 实用命令dd
1.命令简介 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file #输入文件名,缺省为标准输入 ...
- Oracle 正则表达式函数-REGEXP_REPLACE 使用例子
原文在这: 戳 REGEXP_REPLACE 6个参数 第一个是输入的字符串 第二个是正则表达式 第三个是替换的字符 第四个是标识从第几个字符开始正则表达式匹配.(默认为1) 第五个是标识第几个匹配组 ...
- AJAX-----05XMLHttpRequest对象的用post方式进行ajax请求
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS开发Hessian
HessianKit使用参考资料比较少,通过摸索,把测试过程贴出来,代码很乱,未整理,先实现功能,再应用到项目中.供新手参考.如有问题,跟帖指正... HessianService与Java Serv ...
- Eclipse下编写的web项目部署到tomcat下
之前都是用myeclipse编写web项目,编写好然后在myclipse上配置的tomcat下的webapps文件想项目复制到其他tomcat下就能运行了. 最近学习jquery,将eclipse编写 ...
- 配置DNS服务器
一.配置基本的DNS 服务器(包含正向解析和反向解析)域名:abc.com服务器IP:10.1.2.11 1. 编辑主配置文件/etc/named.conf---------------------- ...
- XML标签
SQL标签库提供了创建和操作XML文档的标签. 引入语法:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/js ...
- servlet定义
. 运行在服务器上的java类
- 论Postgres的“已提交的而且 xmin’比当前事务的XID小的记录对当前事务才是可见的”
最近在网上看到这样一句话Postgres“已提交的而且 xmin 比当前事务的XID小的记录对当前事务才是可见的”.先不评断这句话的正确性:看下这句话的结构,因果关系: 按照此话的意思:要postgr ...
- mysql重复索引、冗余索引、未使用索引的定义和查找
1.冗余和重复索引 mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性能.重复索引是指的在相同的列上 ...