-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46549
- shell命令
-
- 文章:(42)篇
- 阅读:154227
- Git教程
-
- 文章:(36)篇
- 阅读:234843
- leetCode刷题
-
- 文章:(76)篇
- 阅读:131787
-
PHP中获取不到自定义header参数解决方案2018-05-27 16:51 阅读(11435) 评论(0)
一、概述
今天在通过PHP中获取自定义header参数时候,一直获取不到。
比如,获取header中USER_NAME参数,如下:
$curUser = isset($_SERVER['USER_NAME']) ? $_SERVER['USER_NAME'] : '未知'; echo $curUser;
通过curl模拟(关于curl的使用可以参考“linux下curl命令汇总”)请求如下:
curl -v -H "host:test.findme.wang" -H "USER_NAME:dequan" http://127.0.0.1/inedx.php
在请求头中,明明可以看到确实传递了USER_NAME:dequan参数,但是接受页面却收不到,如下:
什么原因导致的呢?
首先PHP里,header的key会自动转为大写,其次,key只能包含字母、数字、中划线(-)。且,中划线(-)被自动转为下划线(_),所以获取的时候,需要注意。
所以:
如果,设置一个header的key为name,通过HTTP_NAME来获取
如果,设置一个header的key为user-name,通过HTTP_USER_NAME来获取
如果,设置一个header的key为http-user,通过HTTP_HTTP_NAME来获取,如下:
那么:
如果,设置一个header的key为user_name ,则在PHP接受端是获取不到该header的,因为不支持下划线的可以。
如果,设置一个header的key为http_user,则
基于上面的内容,如果发送端的key为USER_NAME,则接收端是收不到的,只能改为user-name,大小写都可以。
所以上面的案例需要修改为:
$curUser = isset($_SERVER['HTTP_USER_NAME']) ? $_SERVER['HTTP_USER_NAME'] : '未知'; echo $curUser;
发送请求传递header的curl案例如下:
curl -v -H "host:test.findme.wang" -H "user-name:dequan" http://127.0.0.1/inedx.php
于是完美解决header获取不到的问题