一、认识HTTP

HTTP协议历史及设计思路(点击浏览)

二、获取浏览器HTTP请求header信息

1. Apach服务器下可以直接使用 PHP自带函数获取客户端HTTP请求头信息

/*作用:获取客户端HTTP请求所有头信息(header)参数:无。返回:HTTP请求所有头信息数组
*/
getallheaders()

 实例:

<?phpvar_dump(getallheaders());

==>输出

array(12) {["Content-Type"] => string(0) ""["Content-Length"] => string(1) "0"["X-Original-Url"] => string(21) "/Home/Other/getHeader"["Upgrade-Insecure-Requests"] => string(1) "1"["User-Agent"] => string(114) "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36"["Host"] => string(17) "www.example.com"["Cookie"] => string(36) "PHPSESSID=7rjh2uomb8477dggmr85bg9067"["Accept-Language"] => string(14) "zh-CN,zh;q=0.9"["Accept-Encoding"] => string(13) "gzip, deflate"["Accept"] => string(85) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"["Connection"] => string(10) "keep-alive"["Cache-Control"] => string(9) "max-age=0"
}

2.  非apach环境下,可根据服务器$_SERVER信息获取HTTP请求的header信息,设计函数:

function getHeader() {$headers = array(); foreach ($_SERVER as $key => $value) {if ('HTTP_' == substr($key, 0, 5)) { $headers[str_replace('_', '-', substr($key, 5))] = $value; }if (isset($_SERVER['PHP_AUTH_DIGEST'])) { $header['AUTHORIZATION'] = $_SERVER['PHP_AUTH_DIGEST']; } elseif (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { $header['AUTHORIZATION'] = base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW']); } if (isset($_SERVER['CONTENT_LENGTH'])) { $header['CONTENT-LENGTH'] = $_SERVER['CONTENT_LENGTH']; } if (isset($_SERVER['CONTENT_TYPE'])) { $header['CONTENT-TYPE'] = $_SERVER['CONTENT_TYPE']; }}return $headers;
}

实例:

<?phpvar_dump(getHeader());

==>输出

array(11) {["X-ORIGINAL-URL"] => string(21) "/Home/Other/getHeader"["UPGRADE-INSECURE-REQUESTS"] => string(1) "1"["USER-AGENT"] => string(114) "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36"["HOST"] => string(17) "www.example.com"["COOKIE"] => string(36) "PHPSESSID=7rjh2uomb8477dggmr85bg9067"["ACCEPT-LANGUAGE"] => string(14) "zh-CN,zh;q=0.9"["ACCEPT-ENCODING"] => string(13) "gzip, deflate"["ACCEPT"] => string(85) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"["CONTENT-LENGTH"] => string(1) "0"["CONNECTION"] => string(10) "keep-alive"["CACHE-CONTROL"] => string(9) "max-age=0"
}

三、获取服务器HTTP响应header信息

/*作用:获取服务器响应一个 HTTP 请求所发送的所有标头参数:url:目标 URL;format:如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。返回:返回包含有服务器响应一个 HTTP 请求所发送标头的索引或关联数组,如果失败则返回 FALSE。
*/
get_headers ( string $url [,int $format = 0 ] )

实例:

<?php$url = 'http://www.example.com';print_r(get_headers($url));print_r(get_headers($url, 1));
?>

==>输出

Array
([0] => HTTP/1.1 200 OK[1] => Date: Sat, 29 May 2004 12:28:13 GMT[2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT[4] => ETag: "3f80f-1b6-3e1cb03b"[5] => Accept-Ranges: bytes[6] => Content-Length: 438[7] => Connection: close[8] => Content-Type: text/html
)Array
([0] => HTTP/1.1 200 OK[Date] => Sat, 29 May 2004 12:28:14 GMT[Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT[ETag] => "3f80f-1b6-3e1cb03b"[Accept-Ranges] => bytes[Content-Length] => 438[Connection] => close[Content-Type] => text/html
)

四,参考资料

1.  https://www.yiibai.com/manual/php/function.get-headers.html

2.  https://www.oschina.net/question/54100_38761

3.  https://blog.csdn.net/xuezhiwu001/article/details/61203045

【PHP】获取浏览器HTTP请求header信息、获取服务器HTTP响应header信息相关推荐

  1. Selenium+Browsermob-Proxy 爬虫-获取浏览器Network请求和响应(新示例)

    之前有写过一篇文章,使用Selenium+Browsermob-Proxy 获取浏览器Network请求和响应(地址:https://blog.csdn.net/qq_32502511/article ...

  2. dmidecode查看内存信息,服务器序列号,内存插槽信息

    dmidecode查看内存信息,服务器序列号,内存插槽信息 安装 CentOS 7 安装 dmidecode $ sudo yum install -y dmidecode Ubuntu 14.04 ...

  3. 如何查看服务器内存及cpu信息,查看服务器当前内存cpu信息

    查看服务器当前内存cpu信息 内容精选 换一换 设备实时状态查询是检测设备在运行过程中的状态信息.用户可任选以下指令之一查看设备实时状态查询命令的可用参数.ascend-dmi -i -hascend ...

  4. springboot获取多个请求参数_springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...

  5. 重庆市家庭人口信息平台服务器地址,重庆人口信息平台(IC).doc

    重庆人口信息平台(PIC) 全员子系统(V6.1)功能升级帮助手册 工作提示 工作提示是这次升级的重要内容,该功能提供对所有本平台的重要的待办事项的醒目提示,督促乡镇(村)级用户的工作,并且加强区县用 ...

  6. 深圳农村商业银行转账显示服务器无响应,银行信息解决方案.docx

    银行信息解决方案 银行信息化解决方案 银行信息化解决方案 目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc410291380&quo ...

  7. 【web开发】利用User-Agent获取浏览器类型

    今晚学了User-Agent简称UA.通过这个请求头可以获取浏览器的类型. String userAgent = request.getHeader("User-Agent");S ...

  8. html中获取浏览器窗口宽度,JavaScript 获取浏览器窗口的大小

    简明现代魔法 -> JavaScript -> JavaScript 获取浏览器窗口的大小 JavaScript 获取浏览器窗口的大小 2010-04-16 程序演示: 获取浏览器当前窗口 ...

  9. js获取浏览器宽度高度(整理)

    在获取浏览器宽度的时候,许多时候需要考虑滚动条的存在. 一般情况作为前端获取浏览器宽度,主要是指获取body的宽度,可操作的可视范围宽度. 一.使用JQuery获取浏览器宽度 重点,jquery获取的 ...

最新文章

  1. 这12张手绘图,让我彻底搞懂了微服务架构!
  2. php mysql orm_PHP ORM操作MySQL数据库
  3. 通知公告阅读日志构建说明
  4. Invoice校验差异处理
  5. centos6 yum源不能使用
  6. Linux 下 微擎 的安装使用
  7. MAC下 IEDA发布tomcat项目的位置
  8. matlab二元一次方程求解_高中化学二元混合物的十字交叉法解法
  9. 隐藏鼠标指针_Mac鼠标光标消失怎么办?苹果电脑鼠标指针不显示的解决方法
  10. Java CXF介绍与实例
  11. 中文的习题解答中国人看懂, 英文的习题解答外国人能看懂
  12. java MDC_Java MDC.get方法代碼示例
  13. MacBookPro 键盘映射
  14. 直接选择排序——C语言实现
  15. 深入理解prach的频域和时域数据
  16. asset文件夹路径 unity_Unity资源常用目录和路径大总结
  17. PTA:7-32 计算天数
  18. 多目标进化优化-SPEA/R
  19. 城链科技董事长肖金伟:践行数据经济系国家战略,引领数字时代新消费发展!
  20. 渗透一个最近很火的闲鱼钓鱼网站

热门文章

  1. 村淘是什么,农村淘宝有什么用?如何知道宝贝是否加入村淘
  2. 用tkinter做一个代码编辑器(语法高亮,直接运行)
  3. 写给大学时期自己的寄语
  4. MFC使用OpenCV两种版本实现mp4文件的播放
  5. 在Excel中通过VBA实现不定区域的标准差计算
  6. div+CSS浏览器兼容问题整理(IE6.0、IE7.0 ,ie8 , FireFox...)
  7. 解决window聚焦图片不自动更新,没有“喜欢么”信息提示框问题
  8. Git操作 【详细】【详细】
  9. vue根据url获取内容axios_使用Vue.js和Axios从第三方API获取数据 — SitePoint
  10. 暴跌27%!科通芯城遭沽空机构狙击 被指“横跨十年的世纪骗案”