转: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/
}
}

转载于:https://www.cnblogs.com/swing07/p/5534026.html

转:PHP--获取响应头(Response Header)方法相关推荐

  1. php 接口响应头处理,PHP--获取响应头(Response Header)方法

    方法一: ========================================== $baiduUrl = "http://www.baidu.com/link?url=LZE_ ...

  2. node获取响应头Authorization的方法

    node获取响应头Authorization的方法 首先申明这个问题不是前端来处理的,而是后端后端后端后端后端后端后端后端 相信大家都碰到过Refused to get unsafe header & ...

  3. php获取跳转前的地址,PHP获取短链接跳转后的真实地址和响应头信息的方法

    PHP获取短链接跳转后的真实地址和响应头信息的方法获取到一个短连接,需要将短连接转换成真实的网址,通过查资料,发现 PHP 提供了一个函数 get_headers() ,可以完成这个任务,先把 头部信 ...

  4. vue页面返回消息头获取_vue在响应头response中获取自定义headers操作

    日常开发,我们可能会为了安全问题,保证第三方无法通过伪造返回报文欺骗前端,需要在返回报文中添加自定义参数,用于验证身份,后端添加自定义参数,前端校验自定义参数通过后才会执行相应的操作. 系统为了安全会 ...

  5. 请求头(request headers)和响应头(response headers)解析

    原文地址:https://www.cnblogs.com/fighter007/p/8445435.html HTTP 中文开发手册:http://www.php.cn/manual/view/355 ...

  6. php使用curl_exec 获取响应头存在多个HEADER问题解决

    前言: 近期在接一个第三方支付的时候,遇到一个比较头大的问题,因为第三方会把部分响应结果放在header里传输,需要从头里取数据后解密使用,我在本地是正常的,但是放到服务器上就一直是失败,因为取不到对 ...

  7. 使用fetch()获取响应头的content-disposition拿到文件名,下载Excel文件

    需求就是下载一个Excel文件,包括下载,导出,都是调用后端的接口.因为文件名返回再了响应头的content-disposition.前端需要进行一个处理,拿到文件名. 先上代码 downloadDe ...

  8. HTML做frame跳转设置响应头,X-Frame-Options header响应头如何配置

    摘要: X-Frame-Options:值有三个(1)DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许.(2)SAMEORIGIN:表示该页面可以在相... X- ...

  9. 接口响应的Response Header打印不出全部值问题

    后端在每一次接口请求成功时都会更新token值,会在response header中返回.前端在HTTP请求拦截统一处理,每次都会更新vuex store里的用户信息. 但是 在打印时发现,我的电脑打 ...

最新文章

  1. linux yum lamp环境,linux centos yum安装LAMP环境
  2. 【常见笔试面试算法题12续集一】动态规划算法案例1台阶问题练习题
  3. OPENSSL 的深入理解
  4. 离婚前一晚是什么心情呢?
  5. 有人说如果车速每小时超过120公里,爆胎时无法挽回是真的吗?
  6. Kotlin 1.5 新特性:密封接口有啥用?
  7. Ubuntu redmine 安装
  8. Python零基础学习系列之三--Python编辑器选择
  9. 基于JavaScript+css的购物网站项目
  10. select和epoll
  11. android9 三星 港版,三星S9+官方港版安卓9固件系统线刷包:TGY-G9650ZHU4CSE7
  12. iOS开发1小时快速入门
  13. qq linux五笔输入法下载软件,qq五笔输入法
  14. 第六章、正弦稳态电路分析
  15. 华三交换机基本配置命令
  16. uni-app 地图拖拽后,回到我的位置
  17. 程序员如何增加收入?
  18. 最适合程序员口味的10部电影
  19. ssm校园兼职招聘系统计算机毕业设计
  20. Fbx文件解析(一)——FBX SDK for Windows环境配置

热门文章

  1. CAD管道图形绘制过程
  2. 【视频课】快速掌握6大模型部署框架(Pytorch+NCNN+MNN+Tengine+TensorRT+微信小程序)!...
  3. 手机视频文件格式解析之 3GP/MP4
  4. JavaScript禁用复制
  5. 【字符串入门专题1】C - A + B for you again hdu1867【kmp】
  6. 力扣小白刷题之714题买卖股票的最佳时机含手续费
  7. SimpleDateFormat和DateTimeFormatter
  8. 如何在自己网站内分享内容到twitter
  9. Codeforces Round #411 (Div. 2) A-F
  10. 微信版花呗来了测测额度!