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 相关文章推荐
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
解析strtr函数的效率问题
Jun 26 PHP
php二分查找二种实现示例
Mar 12 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
php中array_fill函数的实例用法
Mar 02 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操作Memcache基本函数
2016/07/14 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
ExtJS 入门
2010/10/29 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
深入理解Python3中的http.client模块
2017/03/29 Python
python之PyMongo使用总结
2017/05/26 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
应聘教师推荐信
2013/10/31 职场文书
大学校园活动策划书
2014/02/04 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
团委竞选演讲稿
2014/04/24 职场文书
餐厅筹备计划书
2014/04/25 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
小学中队活动总结
2015/05/11 职场文书
小型婚礼主持词
2015/06/30 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
Android中View.post和Handler.post的关系
2022/06/05 Java/Android