PHP中获取不到自定义header参数解决方案
一、概述
今天在通过PHP中获取自定义header参数时候,一直获取不到。
比如,获取header中USER_NAME参数,如下:
1 2 3 |
|
通过curl模拟(关于curl的使用可以参考“linux下curl命令汇总”)请求如下:
1 |
|
在请求头中,明明可以看到确实传递了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,大小写都可以。
所以上面的案例需要修改为:
1 2 |
|
发送请求传递header的curl案例如下:
1 |
|
于是完美解决header获取不到的问题