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实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 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
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
div层的移动及性能优化
2010/11/16 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
js图片处理示例代码
2014/05/12 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
转预备党员政审材料
2014/02/06 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
表扬稿格式范文
2015/01/16 职场文书
2015年端午节活动总结
2015/02/11 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang
Python字符串常规操作小结
2022/04/03 Python
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle