PHP使用curl发送标头

时间:2014-05-15 12:31:01

标签: php curl

我有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);
}

1 个答案:

答案 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'];