Php 是否可以检查站点以查看其是否响应HTTPS请求?(菲律宾)
我有一个PHP函数:Php 是否可以检查站点以查看其是否响应HTTPS请求?(菲律宾),php,http,url,https,get-headers,Php,Http,Url,Https,Get Headers,我有一个PHP函数: function http_protocol() { return ($_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http'; } 但是,当我发起的域仅为HTTP,并且我希望动态链接到HTTPS域时,条件返回HTTP 因此,我的想法是,我可以检查站点是否响应HTTPS请求,如果响应,则返回HTTPS,否则返回http 我认为使用@get_headers数组是可行的,并检查[0]值是否有HTTPS,但我无法确认是否存在HTT
function http_protocol()
{
return ($_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http';
}
但是,当我发起的域仅为HTTP,并且我希望动态链接到HTTPS域时,条件返回HTTP
因此,我的想法是,我可以检查站点是否响应HTTPS请求,如果响应,则返回HTTPS,否则返回http
我认为使用@get_headers数组是可行的,并检查[0]值是否有HTTPS,但我无法确认是否存在HTTPS头(例如HTTPS/1.1)
我一直在问这个问题:,除了检查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 }
https上存在url并不意味着它是相同的页面/内容。可能是一个完全不同的网站或一个错误页面。听起来你想从PHP检查一个远程站点?但是您正在做的是查看访问您的客户端是否使用https(或者至少使用端口443)。您正在尝试做什么?为什么不能直接使用https呢?您的代码根据您自己的服务器当前正在服务的请求返回“http”或“https”。这不会告诉你更多关于另一个网站的信息。我想您可以尝试在另一个网站上执行对
https
版本的URL的请求,看看是否返回200 OK响应。在我的环境中,两个域是用php为两个不同的网站创建的。一个域使用HTTPS(IIS有URL重写规则将HTTP通信重定向到HTTPS),另一个域使用HTTP。我想使用:从HTTP域链接到HTTPS域,但HTTP_protocol()函数将生成HTTP,而不是HTTPS。