解决问题 PHP $_SERVER[‘HTTPS‘] 没有值

遇到的问题:

最近重新安装了nginx+php,目前http和https都支持,编写代码判断是否是https请求:

php 复制代码
function IsHttpsRequest() {
   if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
       return TRUE;
   } elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https') {
       return TRUE;
   } elseif (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
       return TRUE;
   }
   return FALSE;
}

一般判断 $_SERVER['HTTPS'] 值就可以了,调试代码的时候发现没有这个值。

解决方法:

网上找到的解决办法记录下。

需要在nginx配置文件中加入:

复制代码
fastcgi_param HTTPS $https if_not_empty;

刚开始看到 fastcgi_param 的时候,感觉优点眼熟,后来发现nginx和php请求相关的默认配置有包含文件:

复制代码
location ~ \.php$ {
...
include fastcig.conf;
...
}

文件 fastcig.conf 中定义了很多 fastcgi_param ,可以把 fastcgi_param HTTPS https if_not_empty; 添加到文件 fastcig.conf 中,刷新nginx配置,再调试php代码就能读取到 _SERVER['HTTPS']

相关推荐
沐知全栈开发25 分钟前
C 标准库 - <locale.h>
开发语言
老毛肚29 分钟前
Java两种代理模式详解
java·开发语言·代理模式
小此方33 分钟前
Re:从零开始学C++(二)基础精讲·中篇:引用
开发语言·c++·底层
消失的旧时光-194344 分钟前
Java 线程通信:彻底理解 wait / notify(原理 + 图解 + 实战)
java·开发语言
Coder_Boy_1 小时前
【DDD领域驱动开发】基础概念和企业级项目规范入门简介
java·开发语言·人工智能·驱动开发
morning_judger1 小时前
JavaScript封装演进史:从全局变量到闭包
开发语言·javascript
CoderYanger1 小时前
A.每日一题——3606. 优惠券校验器
java·开发语言·数据结构·算法·leetcode
飛6792 小时前
玩转 Flutter 自定义 Painter:从零打造丝滑的仪表盘动效与可视化图表
开发语言·javascript·flutter
利剑 -~2 小时前
设计java高并安全类
java·开发语言
CoderYanger2 小时前
D.二分查找-基础——744. 寻找比目标字母大的最小字母
java·开发语言·数据结构·算法·leetcode·职场和发展