PHP getallheaders无法获取自定义头(headers)的问题


Posted in PHP onMarch 23, 2016

在客户端请求的时候增加了自定义的http头,请求如下所示:

PHP getallheaders无法获取自定义头(headers)的问题 

自定义http请求头

var_dump(getallheaders);

一开始通过getallheaders参数获取,但是发现在nginx部署的服务器上获取不到,非常奇怪,查看php手册发现getallheaders这个函数只支持apache服务器。于是找到兼容的方法:

if (!function_exists('getallheaders')) {
function getallheaders() {
$headers = array();
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
}
var_dump(getallheaders());

实际上这个方法就是找到$_SERVER变量中以HTTP_开头的属性,对属性做一个字符串替换这样。$_SERVER变量中的HTTP_USER_ID实际就是上面自定义的User-Id:

PHP getallheaders无法获取自定义头(headers)的问题 

php中$_SERVER变量

另外关于自定义Http头, 需要注意头的命名规范,不能用下划线命名 ,否则在nginx服务器下读取不到,在查找命名规范的时候,有提到自定义属性用X-开头这个问题。后来查阅了一些资料,发现后来的http协议不建议这样去做。

以上内容是针对PHP getallheaders无法获取自定义头(headers)的问题的相关叙述,希望对大家有所帮助!

PHP 相关文章推荐
分页显示Oracle数据库记录的类之一
Oct 09 PHP
PHP中路径问题的解决方案
Oct 09 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
php构造函数的继承方法
Feb 09 PHP
php商品对比功能代码分享
Sep 24 PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 PHP
php xhprof使用实例详解
Apr 15 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 #PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 #PHP
Zend Framework开发入门经典教程
Mar 23 #PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 #PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 #PHP
PHP正则获取页面所有图片地址
Mar 23 #PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 #PHP
You might like
php函数与传递参数实例分析
2014/11/15 PHP
php去掉文件前几行的方法
2015/07/29 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
理论讲解python多进程并发编程
2018/02/09 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
介绍一下EJB的体系结构
2012/08/01 面试题
大学生表扬信范文
2014/01/09 职场文书
运动会演讲稿50字
2014/08/25 职场文书
承诺书样本
2014/08/30 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
以下牛机,你有几个
2022/04/05 无线电
正则表达式基础与常用验证表达式
2022/06/16 Javascript