解决问题 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']

相关推荐
hunzi_130 分钟前
开发积分商城为商家带来的多重优势
微信小程序·php
LuckyRich11 小时前
【JsonCpp、Muduo、C++11】JsonCpp库、Muduo库、C++11异步操作
开发语言·c++
钢铁男儿1 小时前
C# 方法的结构与执行详解
开发语言·c#
陈庆之的论衡1 小时前
使用 Poco C++ 库构建轻量级 HTTP 服务器
开发语言·c++·http
lml48561 小时前
Nginx安全防护与HTTPS部署实战
nginx·安全·https
androidwork1 小时前
Kotlin扩展函数提升Android开发效率
android·开发语言·kotlin
惊起白鸽4502 小时前
nginx安全防护与HTTPS部署实战
nginx·安全·https
跟着杰哥学Python2 小时前
一文读懂Python之pandas模块
开发语言·python·pandas
2501_916008892 小时前
iOS与HTTPS抓包调试小结
websocket·网络协议·tcp/ip·http·网络安全·https·udp
Stay Passion2 小时前
Java实用注解篇: @JSONField
java·开发语言·json