为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
海绵宝宝撒 2019-07-22 19:35:20
如何找出您使用的HTTPS是否没有$_server[‘HTTPS’]我在网上见过很多教程说你需要检查$_SERVER['HTTPS']如果服务器是连接,则使用HTTPS保护连接。我的问题是在我使用的一些服务器上,$_SERVER['HTTPS']是导致错误的未定义变量。我是否可以检查另一个应该总是定义的变量?为了明确起见,我目前正在使用此代码来解析它是否是HTTPS连接:if(isset($_SERVER['HTTPS'])) {     if ($_SERVER['HTTPS'] == "on") {         $secure_connection = true;     }}
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

我的解决方案(因为标准条件[$_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#公用_非标准_请求_标头


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 1482 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信