Необходимо отправить запрос API. По какой-то причине сервер блокирует запрос CURL, но он одобряет запрос ajax XHR. Я мог бы отправить запрос ajax, но возникает другая проблема. - Смешанный контент, который мой сайт обслуживает через HTTPS, но запрос, который нужно отправить, - через HTTP, поэтому я не могу использовать ajax.
Я ищу способ имитации запроса ajax через CURL, каким-то образом, обмануть сервер, чтобы полагать, что запрос CURL действительно является ajax-запросом.
Вот что я пробовал.
Это мой запрос CURL.
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64)');
curl_setopt($ch, CURLOPT_REFERER, 'server url');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept:application/json, text/javascript, */*; q=0.01',
'Accept-Encoding:gzip, deflate',
'Accept-Language:en-US,en;q=0.9',
'Connection:keep-alive',
'Content-Type: application/json; charset=utf-8',
'X-Requested-With: XMLHttpRequest',
'__RequestVerificationToken: $token'
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, base_path().'/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, base_path().'/cookies.txt');
$buffer = curl_exec($ch);
if(curl_error($ch))
{
$buffer = curl_error($ch);
}
curl_close($ch);
return $buffer; Этот запрос на завивание заблокирован
Но этот запрос ajax проходит через мой локальный хост, но поскольку мой веб-сайт использует HTTPS, я не могу его использовать.
$.ajax({
type: "get",
xhrFields: { withCredentials:true },
url: http://apiendpoint.com,
success: function(data)
{
// console.log(data);
}
})