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下MAIL的另一解决方案
Oct 09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
PHP文件下载类
Dec 06 PHP
php桌面中心(四) 数据显示
Mar 11 PHP
php mysql数据库操作分页类
Jun 04 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
PHP序列化操作方法分析
Sep 28 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 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中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
原生js调用json方法总结
2018/02/22 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
python局部赋值的规则
2013/03/07 Python
python字典序问题实例
2014/09/26 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
详解python 爬取12306验证码
2019/05/10 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
软件测试英文面试题
2012/10/14 面试题
安全资料员岗位职责
2013/12/14 职场文书
合作意向协议书范本
2014/03/31 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
毕业论文致谢信
2015/05/14 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL