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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
PHP 中文乱码解决办法总结分析
Jul 30 PHP
php foreach、while性能比较
Oct 15 PHP
php 文件上传系统手记
Oct 26 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
深入分析php之面向对象
May 15 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
php array_merge_recursive 数组合并
Oct 26 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导出oracle库的php代码
2009/04/20 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
php实现记事本案例
2020/10/20 PHP
ext实现完整的登录代码
2008/08/08 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
对python读取CT医学图像的实例详解
2019/01/24 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
专科毕业生就业推荐信
2013/11/01 职场文书
《值日生》教学反思
2014/02/17 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
党支部承诺书范文
2014/03/28 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
三八妇女节慰问信
2015/02/14 职场文书
贷款工作证明模板
2015/06/12 职场文书
python实现图片批量压缩
2021/04/24 Python
MySQL8.0.18配置多主一从
2021/06/21 MySQL
python获取字符串中的email
2022/03/31 Python