Curl ответ код 0

Имеется определенный curl запрос(php ), при запросе на сайт возвращает http_code 0, через браузер этот же запрос возвращает 302. Также в браузере проскакивает этот же запрос методом OPTIONS, имеется предположение, может это как то взаимосвязано, и нужно еще посылать запрос OPTIONS? Или может дело вообще в другом?

function func1($param1, $param2){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.sitename.ru/file.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip, deflate, br');
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
                                        'Accept: application/json, text/plain, */*',
                                        'Accept-Encoding: gzip, deflate, br',
                                        'Content-Type: application/json;charset=UTF-8'
                                        ));
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36');
 curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(array(
'param1' => $param1,
'param2' => $param2
)));
$out = curl_exec($curl);
$result = json_decode($out, true);
return $result;
}

Ответы (2 шт):

Автор решения: Daniel Protopopov

У вас запрос идёт на HTTPs, поэтому либо выключайте проверку сертификата через

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);

либо устанавливайте путь до сертификата через

curl_setopt($ch, CURLOPT_CAINFO, “/var/your_path/to/cert.ca”);
→ Ссылка
Автор решения: Aziz Umarov

Это работает CORS. Почитайте тут

<?php
header("Access-Control-Allow-Origin: http://example.com");?>
→ Ссылка