У меня есть функция PHP:
function http_protocol()
{
return ($_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http';
}
Однако, когда домен, из которого я происходил, только HTTP, и я хочу динамически связать с доменом, который является HTTPS, условное возвращает http.
Итак, я подумал, что я могу проверить, отвечает ли сайт на запрос HTTPS, и если да, то вернуть https, иначе вернет http.
Я думал, что это можно сделать с помощью массива @get_headers и проверить, имеет ли значение [0] HTTPS, но я не смог подтвердить, существует ли заголовок HTTPS (например, HTTPS / 1.1).
Я следил за этим вопросом: Как я могу проверить, существует ли URL через PHP?, кроме того, я бы проверял HTTPS.
Мой логический поток корректен, или я что-то упускаю?
Редактировать: в конкретном примере я бы только проверять сайты, которые я контролирую. Так что я заранее знаю, подается ли контент по HTTPS или нет.
Вы можете проверить с помощью библиотеки curl.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
curl_close($ch);
if(curl_getinfo($ch)['http_code'] == 200){existing }
Других решений пока нет …