php中如何获取请求头header

php如何获取请求头,做了很多探索。

网上查询的结果只能获取到已定义的字段。

不能获取自定义的字段。

经实验发现自定义字段中不可包含下划线。

去掉下划线,使用$_SERVER就可以获取了。

原因如下:

HTTP头是可以包含英文字母([A-Za-z])、数字([0-9])、连接号(-)hyphens, 也可义是下划线(_)。在使用nginx的时候应该避免使用包含下划线的HTTP头。主要的原因有以下2点。
1.默认的情况下nginx引用header变量时不能使用带下划线的变量。要解决这样的问题只能单独配置underscores_in_headers on。
2.默认的情况下会忽略掉带下划线的变量。要解决这个需要配置ignore_invalid_headers off。

获取请求可以通过$_SERVER获取,如下为示例

1.代码示例

/**

 * 获取请求header

 *

 */

function getallheaders($param = null) {

    $headers array();

    foreach ($_SERVER as $name => $value) {

        if (substr($name, 0, 5) == 'HTTP_') {

            $headers[str_replace(' ''-', ucwords(strtolower(str_replace('_'' 'substr($name, 5)))))] = $value;

        }

    }

    if($param != null){

        return $headers[$param];

    }

    return $headers;

}

public function headersdemo() {

    $param $this->request->param();

    $a getallheaders($param);

    dump($a);

    dump('===================');

    dump($_SERVER);

    // dump($_SERVER["HTTP_ECOTOKEN"]);

    // throw new HttpResponseException(json(['code' => 1, 'list' => $param, 'headerss' => $a]));

     

}

结果示例

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值