У меня есть повод пойти еще дальше и определить, поддерживает ли сайт, к которому я подключаюсь, SSL (один проект запрашивает у пользователя его URL, и мы должны убедиться, что он установил наш пакет API на сайте http или https).
Вот функция, которую я использую - в основном, просто вызовите URL через cURL, чтобы увидеть, работает ли https!
function hasSSL($url)
{
// take the URL down to the domain name
$domain = parse_url($url, PHP_URL_HOST);
$ch = curl_init('https://' . $domain);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); //its a HEAD
curl_setopt($ch, CURLOPT_NOBODY, true); // no body
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // in case of redirects
curl_setopt($ch, CURLOPT_VERBOSE, 0); //turn on if debugging
curl_setopt($ch, CURLOPT_HEADER, 1); //head only wanted
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // we dont want to wait forever
curl_exec($ch);
$header = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($header === 200) {
return true;
}
return false;
}
Это самый надежный способ, который я нашел, чтобы не только узнать, используете ли вы https (как задает вопрос), но и если вы МОЖЕТЕ (или даже ДОЛЖНЫ) использовать https.
ПРИМЕЧАНИЕ: возможно (хотя и не очень вероятно ...), что сайт может иметь разные страницы http и https (поэтому, если вам говорят, что вы должны использовать http, возможно, вам не нужно менять ..) Подавляющее большинство сайтов такие же, и, вероятно, должны перенаправить вас сами, но эта дополнительная проверка имеет свое применение (конечно, как я уже сказал, в проекте, где пользователь вводит информацию о своем сайте, и вы хотите убедиться на стороне сервера)