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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
php开发环境配置记录
Jan 14 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
详细解读php的命名空间(二)
Feb 21 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类
2008/04/09 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
javascript轮播图算法
2016/10/21 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python探索之自定义实现线程池
2017/10/27 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
读书之星事迹材料
2014/05/12 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
单位车辆管理制度
2015/08/05 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang