获取请求header中指定字段的值
1private function getHeader($name) {//获取请求头中$name的值
2$name = 'HTTP_' . $name;
3foreach ($_SERVER as$key => $value) {
4if($key == $name) {
5return$value;
6            }
7        }
8return null;
9    }
若指定字段不存在则返回 null
需要特别注意的是,如果我们是⽤ nginx 提供反向代理服务,则需要在 f 中将 underscores_in_headers 设置成 on (如图)才能在请求的 headers 中带⾃定义带下划线的字段,否则 headers 中的⾃定义带下划线字段会丢失。
例:
1$header = array('token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU','language:zh','region:GZ', 'user:xiao01', 'AMIS_USER:xiao01');
2
3$content = array(
4        'name' => 'fdipzone'
5 );
6
7echo tocurl($api, $header, $content);
8
9/**
10 * 发送数据
11 * @param String $url    请求的地址
12 * @param Array  $header  ⾃定义的header数据
13 * @param Array  $content POST的数据
14 * @return String
15*/
16function tocurl($url, $header, $content){
17$ch = curl_init();
18if(substr($url,0,5)=='https'){
19        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
20        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在
21    }
22    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
23    curl_setopt($ch, CURLOPT_URL, $url);
24    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
25    curl_setopt($ch, CURLOPT_POST, true);
26    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
27$response = curl_exec($ch);
28if($error=curl_error($ch)){
29die($error);
30    }
31    curl_close($ch);
32return$response;
33 }
若没有将 f 中的 underscores_in_headers 为 on 的话,nginx 不会将 header 中的 AMIS_USER 字段传到我们的后端接⼝中,也就⽆法⽤上⾯的 getHeader 获取到 AMIS_USER 字段的值了。
$header = array('token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU','language:zh','region:GZ', 'user:xiao01', 'AMIS_USER:xiao01'); $content = array(        'name' => 'fdipzone');
echo tocurl($api, $header, $content);
/** * 发送数据 * @param String $url    请求的地址 * @param Array  $header  ⾃定义的header数据 * @
param Array  $content POST的数据 * @return String */function tocurl($url, $header, $content){    $ch = curl_init();    if(substr($url,0,5)=='https'){        curl_setopt($ch,
CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL 加密算法是否存在    }    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch,
CURLOPT_POSTFIELDS, http_build_query($content));    $response = curl_exec($ch);    if($error=curl_error($ch)){        die($error);    }  curl_close($ch);    return $response;}
php中header是什么意思