如何找出您使用的HTTPS是否没有$_server[‘HTTPS’]

如何找出您使用的HTTPS是否没有$_server[‘HTTPS’]

我在网上见过很多教程说你需要检查$_SERVER['HTTPS']如果服务器是连接,则使用HTTPS保护连接。我的问题是在我使用的一些服务器上,$_SERVER['HTTPS']是导致错误的未定义变量。我是否可以检查另一个应该总是定义的变量?

为了明确起见,我目前正在使用此代码来解析它是否是HTTPS连接:

if(isset($_SERVER['HTTPS'])) {
    if ($_SERVER['HTTPS'] == "on") {
        $secure_connection = true;
    }}


海绵宝宝撒
浏览 1483回答 3
3回答

阿晨1998

我的解决方案(因为标准条件[$_server[‘HTTPS’]=‘on’]在负载均衡器后面的服务器上不工作)是:$isSecure = false;if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {     $isSecure = true;}elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {     $isSecure = true;}$REQUEST_PROTOCOL = $isSecure ? 'https' : 'http';http_X_proto:a事实上标识HTTP请求的原始协议的标准,因为反向代理(负载均衡器)可以使用HTTP与Web服务器通信,即使对反向代理的请求是HTTPShttp:/en.wikipara.org/wiki/list_of_HTTP_Header_field#公用_非标准_请求_标头
打开App,查看更多内容
随时随地看视频慕课网APP