检查服务器是否为https不起作用

时间:2015-08-01 20:42:06

标签: php https

我试图检查一个服务器是否有https enabled,但它从不进入if,而是在else语句中。

if ($_SERVER['HTTPS'] == "yes") {
    echo "HTTPS";
} else {
     echo "HTTP";
}

我做错了什么?

3 个答案:

答案 0 :(得分:6)

它应该是"on",而不是"yes"

if ($_SERVER['HTTPS'] == "on") {
    echo "HTTPS";
} else {
     echo "HTTP";
}

答案 1 :(得分:3)

我会回应服务器[https]变量。根据服务器的不同,可能会在' on'不是'是'。

答案 2 :(得分:1)

根据http://php.net/manual/en/reserved.variables.server.php

  

' HTTPS'       如果通过HTTPS协议查询脚本,则设置为非空值。

但它还补充道:

Note: Note that when using ISAPI with IIS, the value will be off if the request was not made through the HTTPS protocol. 

所以,我会使用不同的逻辑:

<code>
if ( empty( $_SERVER['HTTPS'] ) ) {
    echo 'http:';
}
else if ( $_SERVER['HTTPS'] == 'off' ) {
    echo 'http:';
}
else {
    echo 'https:';
}
</code>

这种方式无论是&#34; on&#34;或&#34;是&#34;。 但是,我没有为https案例测试此环境的环境。 http适用于我的情况。