Tôi có cơ hội tiến thêm một bước và xác định xem trang web tôi đang kết nối có khả năng SSL không (một dự án hỏi người dùng về URL của họ và chúng tôi cần xác minh rằng họ đã cài đặt gói API của chúng tôi trên trang web http hoặc https).
Đây là chức năng tôi sử dụng - về cơ bản, chỉ cần gọi URL qua cURL để xem https có hoạt động không!
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;
}
Đây là cách đáng tin cậy nhất mà tôi đã tìm thấy không chỉ tìm ra NẾU bạn đang sử dụng https (như câu hỏi yêu cầu), mà nếu bạn CÓ THỂ (hoặc thậm chí NÊN) đang sử dụng https.
LƯU Ý: có thể (mặc dù không thực sự có khả năng ...) rằng một trang web có thể có các trang http và https khác nhau (vì vậy nếu bạn được yêu cầu sử dụng http, có thể bạn không cần thay đổi ..) Phần lớn các trang web là như nhau và có lẽ nên tự định tuyến lại cho bạn, nhưng kiểm tra bổ sung này có công dụng của nó (chắc chắn như tôi đã nói, trong dự án nơi người dùng nhập thông tin trang web của họ và bạn muốn chắc chắn từ phía máy chủ)