Как передать заголовки в POST запросе через CURL?
пишешь в адресной строке своего браузера, Как передать заголовки в POST запросе через CURL?
и получаешь миллион ответов
неужели это так трудно и надо специально идти на тостер и задавать этот вопрос в миллион первый раз ?
Вот так:
// Пример набора заголовков
$headers = [
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: en-US,en;q=0.5',
    'Cache-Control: no-cache',
    'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
    'Host: www.example.com',
    'Referer: http://www.example.com/index.php', 
    'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0'
];

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $link_zapros, //Адрес запроса
CURLOPT_USERAGENT => 'ctrlv cURL Request',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $data, //Параметры
CURLOPT_HTTPHEADER => $headers // Заголовки
));
$response = curl_exec($curl);
curl_close($curl);
P.S. Логически же легко понять как добавлять в curl_setopt_array, причем в документации прямо и указано