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代码规范详解
Jan 13 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
php创建session的方法实例详解
Jan 27 PHP
递归实现php数组转xml的代码分享
May 14 PHP
php如何连接sql server
Oct 16 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP中PCRE正则解析代码详解
Apr 26 PHP
关于laravel 日志写入失败问题汇总
Oct 17 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生成Flash动画的实现代码
2010/03/12 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
js实现简单模态框实例
2018/11/16 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
python中实现php的var_dump函数功能
2015/01/21 Python
Python实现从订阅源下载图片的方法
2015/03/11 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
python推导式的使用方法实例
2021/02/28 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
放弃继承权公证书
2015/01/23 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书