首页 > 编程语言 >PHP中获取不到自定义header参数解决方案

PHP中获取不到自定义header参数解决方案

时间:2022-11-11 15:56:39浏览次数:66  
标签:HTTP NAME 自定义 获取 header USER key PHP

一、概述

今天在通过PHP中获取自定义header参数时候,一直获取不到。

比如,获取header中USER_NAME参数,如下:

1

2

3

$curUser = isset($_SERVER['USER_NAME']) ? $_SERVER['USER_NAME'] : '未知';

 

echo $curUser;

通过curl模拟(关于curl的使用可以参考“linux下curl命令汇总”)请求如下:

1

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,大小写都可以。

所以上面的案例需要修改为:

1

2

$curUser = isset($_SERVER['HTTP_USER_NAME']) ? $_SERVER['HTTP_USER_NAME'] : '未知';

echo $curUser;

发送请求传递header的curl案例如下:

1

curl -v -H "host:test.findme.wang" -H "user-name:dequan" http://127.0.0.1/inedx.php

于是完美解决header获取不到的问题

标签:HTTP,NAME,自定义,获取,header,USER,key,PHP
From: https://www.cnblogs.com/kuangke/p/16880682.html

相关文章

  • PHP构造验证码
    代码如下:<?phpheader('Content-type:image/jpeg');$width=120;$height=40;$element=array('a','b','c','d','e','f','g','h','i','j','k','m......
  • thinkPHP查询数据库常用函数
      1.find()  查询一条数据2.field()  查询的字段如field('id,name,age')3.select()  查询多条数据4.setField()  修改一个字段或多个字段值  如se......
  • PHP代码
    //要访问的目标页面$targetUrl="http://ip.hahado.cn/ip";//$targetUrl="http://ip.hahado.cn/switch-ip";//$targetUrl="http://ip.hahado.cn/curr......
  • Android实战简易教程-第三十三枪(自定义View实现控件晃动提示效果)
    用户登录注册页面,在进行数据提交之前我们一般都要进行初步判断,判断用户是否输入内容,在内容为空时我们一般进行Toast提示,今天我们实现另一种提示效果–控件晃动。接着上一......
  • Android实战简易教程-第三十二枪(自定义View登录注册界面EditText-实现一键清空)
    自定义View实现登录注册页面的EditText一键清空功能,效果如下:输入框输入文字后自动出现一键清空键,输入框文字为空时,一键清空键隐藏,下面我们看一下如何通过自定义View实现这......
  • 自定义顶部标题栏和其事件监听设置
    iOS系统上方的工具栏很漂亮,也很实用,下面让我们来仿制一下吧。首先新建一个布局文件title.xml:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://......
  • Android实战简易教程-第四十六枪(自定义控件体验之罗盘)
    前言作为一名有创新意思的开发人员,你迟早会发现内置的控件会满足不了你的想象力。拥有扩展已存在的视图、组建复合的控件以及创建独特的新视图能力,可以创建出最适合自己应用......
  • PHP判断内网/外网IP
        工作中用到PHP来判断内外网IP,查找资料偶然发现已有现成的实现函数,cool!filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_NO_PRIV_RANGE|FILTER_FLAG_NO_RES_R......
  • php 获取文件mime类型的方法
     php获取文件mime类型的方法 1.使用mime_content_type方法stringmime_content_type(string$filename)ReturnstheMIMEcontenttypeforafileasdeterminedb......
  • centos7安装php8
    原文: http://www.manongjc.com/detail/25-qpyxndyogppmfdf.html前言centos7默认源的php版本只有5.4,版本太老,而mediawiki需要的php版本为7.4以上,所以本文直接升级到php8......