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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 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
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
js实现列表按字母排序
2020/08/11 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
用Python进行websocket接口测试
2020/10/16 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
怎样声明一个匿名的内部类
2016/06/01 面试题
创业女性典型材料
2014/05/02 职场文书
关于安全演讲稿
2014/05/09 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
食品药品安全责任书
2015/05/11 职场文书
工作服管理制度范本
2015/08/06 职场文书
感恩教育主题班会
2015/08/12 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
Django显示可视化图表的实践
2021/05/10 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS