首页 > 解决方案 > 从 Laravel 中的 curl 请求中获取标头

问题描述

我有一个场景,我必须发出 curl 请求并且需要从响应标头接收令牌。这是我尝试过的:

$post_request = [
    .....
];

$payload = json_encode($post_request);
$headers = [];
$curl_connection = curl_init($endpoint);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl_connection, CURLOPT_HTTPHEADER, array('Content-Type:application/json;charset=utf8'));
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_HEADER, true);

// this function is called by curl for each header received
curl_setopt($curl_connection, CURLOPT_HEADERFUNCTION,
    function ($curl, $header) use (&$headers) {
        $len = strlen($header);
        $header = explode(':', $header, 2);
        if (count($header) < 2) // ignore invalid headers
        {
            return $len;
        }
        $headers[strtolower(trim($header[0]))][] = trim($header[1]);
        return $len;
    }
);

try {
    $api_response = curl_exec($curl_connection);

} catch (\Exception $e) {
    Log::error($e->getMessage());
    throw $e;
}

$token = json_encode($headers['x-subject-token']);

这在 localhost 中运行良好。但是在我的服务器 [Laravel Forge (Nginx+php)] 中,我无法以这种方式接收标头。任何人都可以建议任何其他好的方法来接收来自服务器的 curl 响应的标头吗?

标签: nginxcurlresponse-headerslaravel-forge

解决方案


推荐阅读