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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
PHP脚本数据库功能详解(上)
Oct 09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
python实现微信防撤回神器
2019/04/29 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
为什么说python更适合树莓派编程
2020/07/20 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
Java如何读取CLOB字段
2013/10/10 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
应届生煤化工求职信
2013/10/21 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
面试通知邮件
2015/04/20 职场文书
放牛班的春天观后感
2015/06/01 职场文书
python Polars库的使用简介
2021/04/21 Python
浅谈Web Storage API的使用
2021/06/23 Javascript
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL