curl http header_PHP如何解析header头部信息
現在寫接口經常會使用header來傳遞一些驗證信息,我們用各種php框架可以輕松的獲取到,但是它底層是怎么做的呢?我們今天來聊一聊。
我們知道,在php中獲取get參數(Query String Parameters)可以使用$_GET全局變量,獲取post參數使用$_POST全局變量。但是我們想要獲取header,好像缺沒有一個類似$_HEADER的全局變量來供我們使用。那我們想要獲取到header信息該怎么辦呢?也不賣關子了,我們可以從$_SERVER這個全局變量中獲取到。接下來我們來進行這個操作:
我們寫一個簡單的php文件測試一下:
<?php // header.phpvar_dump($_SERVER); ?>在這里我的訪問地址是: http://localhost/header.php
我們使用postman工具或者curl命令請求下這個地址,并加入我們自定義的一個頭 token: 123456
curl -H "token: 123456" http://localhost/header.php在輸出中我們可以找到一項
// ... 省略了好多["HTTP_TOKEN"]=> string(6) "123456"// ... 省略了好多而這個HTTP_TOKEN就是我們想要的東西,我們傳入的小寫token, 在這里也轉換成了大寫。
我們再試一個,這次我們傳遞兩個header:
curl -H "test_token: 654321" -H "token: 123456" http://localhost/header.php測試發現,我們在輸出中只找到了HTTP_TOKEN,缺沒有找到我們預想的HTTP_TEST_TOKEN。不要著急,我們把下劃線_換成連字符-試試:
curl -H "test-token: 654321" -H "token: 123456" http://localhost/header.php看看輸出,這下兩個header都找到了。
// ... 省略了好多["HTTP_TEST_TOKEN"]=> string(6) "654321" ["HTTP_TOKEN"]=> string(6) "123456"// ... 省略了好多綜上所述:傳遞header的鍵值,只能是單個詞或者以中劃線-連接的詞。不然php會忽略。
好了接下來我們在實際應用中,只要把$_SERVER中的以HTTP_開頭的下標都提取出來然后轉換成首字母大寫的格式就好了。
<?php function parse_headers(){$headers = [];foreach ($_SERVER as $name => $value){if (substr($name, 0, 5) == 'HTTP_'){$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;}}return $headers; }$headers = parse_headers(); var_dump($headers);?>看看輸出:
array(5) {["Host"]=>string(9) "localhost"["User-Agent"]=>string(11) "curl/7.65.3"["Accept"]=>string(3) "*/*"["X-Token"]=>string(6) "654321"["Token"]=>string(6) "123456" }好了,有模有樣,完美!?
作者博客鏈接?metmoon.com總結
以上是生活随笔為你收集整理的curl http header_PHP如何解析header头部信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为祭出大杀器华为祭出大杀器了吗
- 下一篇: 中兴发布的云电脑中兴云电脑怎么用