PHP getallheaders无法获取自定义头(headers)的问题

作者:mrr 时间:2024-04-30 08:47:30 

在客户端请求的时候增加了自定义的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,getallheaders,自定义,headers
0
投稿

猜你喜欢

  • 如何基于Python pygame实现动画跑马灯

    2023-09-07 18:56:59
  • 写给JavaScript库开发者们的规则

    2008-10-26 12:30:00
  • Python实现全局变量的两个解决方法

    2021-03-23 22:43:44
  • Git建立本地仓库并上传到Gitee的详细步骤

    2023-03-06 20:45:21
  • Python解决多进程间访问效率低的方法总结

    2023-11-25 11:57:43
  • 文字解说Golang Goroutine和线程的区别

    2023-10-15 18:56:36
  • gchart:基于google图表API的jquery组件全攻略:1、入门

    2010-01-25 12:18:00
  • python小程序实现刷票功能详解

    2022-08-23 06:17:22
  • Oracle中sys和system的区别小结

    2009-11-10 20:36:00
  • Python转换字典成为对象,可以用"."方式访问对象属性实例

    2021-06-01 09:01:50
  • WPF滑块控件(Slider)的自定义样式

    2022-01-19 20:05:02
  • python实现csdn全部博文下载并转PDF

    2023-08-13 05:26:41
  • 实例讲解Python的函数闭包使用中应注意的问题

    2022-05-17 23:29:53
  • python抓取网页中的图片示例

    2022-02-24 20:07:22
  • 选择什么样的DOCTYPE

    2007-05-31 09:32:00
  • JavaScript match() 方法

    2007-11-04 13:28:00
  • 三大措施设置数据库安全 保障网站安全运营

    2008-11-28 14:41:00
  • Python实现周期性抓取网页内容的方法

    2023-04-12 01:33:36
  • 在Typescript中如何使用for...in详解

    2023-08-18 15:39:32
  • Python文本终端GUI框架示例详细讲解

    2021-05-19 22:47:12
  • asp之家 网络编程 m.aspxhome.com