做接口服务时候。有些场景会使用header 来传递参数。 查看官网文档说明:
数据来源 source
指定当前单个参数的数据来源,可以是post、get、cookie、server、request、header、或其他自定义来源。未指定时,默认为统一数据源。
目前支持的source与对应的数据源映射关系如下:
source | 对应的数据源 |
---|---|
post | $_POST |
get | $_GET |
cookie | $_COOKIE |
server | $_SERVER |
request | $_REQUEST |
header | $_SERVER['HTTP_X'] |
本次我使用header 时 ,发现 一直校验失败。
过程如下:
1 、./config/app.php 里边 apiCommonRules 设置应用层统一参数;
'apiCommonRules' => array(
//签名
'sign' => array(
'name' => 'sign', 'require' => true,"source"=>'header',
),
),
排查过程:
1、打开文件 ./vendor/phalapi/kernal/src/Request.php
2、打断点, 通过比对 $data 和 $rule , 发现 大小写问题。
3、查看底层代码:
路径一:./vendor/phalapi/kernal/src/Request.php
路径二:./vendor/phalapi/kernal/src/Request/Parser.php
得出一个结论:
发现,这是PHP 接收 header 时候,首字母都会是大写的原因;
解决办法:
./config/app.php 里边 name 值首字母改为大写即可!
'apiCommonRules' => array(
// //签名
'sign' => array(
'name' => 'Sign', 'require' => true,"source"=>'header',
),
),
再一次验证果然成功!如下: