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 相关文章推荐
PHP5中虚函数的实现方法分享
Apr 20 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
Yii中表单用法实例详解
Jan 05 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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中AES加密解密的例子小结
2014/02/18 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
用jscript启动sqlserver
2007/06/21 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
Python类的多重继承问题深入分析
2014/11/09 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python读写文件基础知识点
2019/06/10 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
简单了解python中对象的取反运算符
2019/07/01 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python实现双色球随机选号
2020/01/01 Python
python 写一个水果忍者游戏
2021/01/13 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
银行个人求职自荐信范文
2013/12/16 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
精神文明单位申报材料
2014/05/02 职场文书
2014年医务科工作总结
2014/12/18 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android