獲取請求 header 中指定字段的值


1 private function getHeader($name) {//獲取請求頭中$name的值
2          $name = 'HTTP_' . $name;
3         foreach ($_SERVER as $key => $value) {
4             if($key == $name) {
5                 return $value;
6             }
7         }
8         return null;
9     }

若指定字段不存在則返回 null

 

需要特別注意的是,如果我們是用 nginx 提供反向代理服務,則需要在 nginx.conf 中將 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 
 7 echo 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  */
16 function tocurl($url, $header, $content){
17     $ch = curl_init();
18     if(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);
28     if($error=curl_error($ch)){
29         die($error);
30     }
31     curl_close($ch);
32     return $response;
33 }

若沒有將 nginx.conf 中的 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;}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM