Tengo la oportunidad de ir un paso más allá y determinar si el sitio al que me estoy conectando es compatible con SSL (un proyecto le pide al usuario su URL y debemos verificar que haya instalado nuestro paquete API en un sitio http o https).
Aquí está la función que uso: ¡básicamente, solo llame a la URL a través de cURL para ver si https funciona!
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;
}
Esta es la forma más confiable que he encontrado para descubrir no solo SI está usando https (como lo indica la pregunta), sino si PUEDE (o incluso DEBERÍA) estar usando https.
NOTA: es posible (aunque no muy probable ...) que un sitio tenga páginas http y https diferentes (por lo tanto, si le dicen que use http, tal vez no necesite cambiar ...) La gran mayoría de los sitios son los mismos, y probablemente deberían redirigirlo usted mismo, pero esta verificación adicional tiene su uso (ciertamente, como dije, en el proyecto donde el usuario ingresa la información de su sitio y desea asegurarse desde el lado del servidor)