我有2个文件client.php和server.php。我想用curl从客户端向服务器发送标头,然后在服务器中读取这个标头,但遗憾的是我无法在服务器文件中获取标头。我尝试使用getallheaders()
执行此操作但未显示任何内容。然后,当我在其上使用get_headers()
时,我尝试了var_dump
,其中显示为null。
我的客户代码: ` $ result = sendRequest(); echo“res:”。$ result;
function sendRequest()
{
$method = 'test';
$params = array();
$params["method"] = $method;
$post = http_build_query($params, "", "&");
$headers = array(
"API-Key: test",
"API-Key2: test2",
"API-Key3: test3",
"API-Key4: test4",
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, "http://example.com/server.php");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//curl_setopt($curl, CURLOPT_HEADER, 1);
$ret = curl_exec($curl);
return $ret;
}
和server.php:
get();
function get()
{
$head = get_headers();
var_dump($head);
}
答案 0 :(得分:0)
使用
从当前请求中获取所有HTTP请求标头apache_request_headers();
查看php.net apache-request-headers
如果apache_request_headers()不可用,请循环通过超级全局$_SERVER
并获取所需信息,请求标头以HTTP_
开头,如
$headers = array();
foreach ($_SERVER as $key => $value) {
if (preg_match('/^HTTP_.+/', $key)) {
// sanitize keys removing HTTP_
$headers[str_replace('HTTP_','',$key)] = $value;
}
}
使用
echo $headers['API-Key'];