Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以检查站点以查看其是否响应HTTPS请求?(菲律宾)_Php_Http_Url_Https_Get Headers - Fatal编程技术网

Php 是否可以检查站点以查看其是否响应HTTPS请求?(菲律宾)

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

我有一个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)

我一直在问这个问题:,除了检查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。