gpt4 book ai didi

php - CakePHP Force SSL - env ('HTTPS' ) 始终为 null

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:55 25 4
gpt4 key购买 nike

我尝试了很多不同的解决方案(herehereherehere),但几乎所有解决方案都会导致 404 或无限循环。

最后我找到了this question这似乎最接近工作;但是当我尝试加载我希望要求 SSL 的操作之一时,它也会在 Firefox 中导致错误:

The page isn't redirecting properly

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

This problem can sometimes be caused by disabling or refusing to accept cookies.

最后,通过一系列调试,我发现 env('HTTPS') 出于某种原因总是返回 null($this->RequestHandler 也是如此) ->isSsl();$_SERVER['HTTPS']) 即使我使用的是 HTTPS 连接。我不明白为什么会这样,因为我的浏览器报告我是 SSL 安全的并且我的证书似乎安装正确。

更多信息

nginx 服务器

listen 80;
listen 443 ssl;

ssl_certificate /etc/ssl/certs/domain.chain.crt;
ssl_certificate_key /etc/ssl/private/domain.key;
...

应用 Controller

var $secureItems = array('login', 'edit', 'viewDocs');

function beforeFilter() {
$this->Auth->allow('index', 'display');
$this->set('loggedUser', $this->Auth->user());

$this->__checkSSL();
}

__checkSSL() 和支持函数直接来自之前的链接问题 ( this one )。

页面在 HTTP 和 HTTPS 中加载良好,只要它不是我在 $secureItems 中列出的操作之一,只要我执行其中一个操作(HTTP 或 HTTPS),它就会无限地重定向。

感谢任何帮助!

编辑:

我很确定问题是由 env('HTTPS') 始终为 null 引起的无限循环。由于它为 null,因此检查条件始终为 false 并使其重定向到 HTTPS URL,即使它已经存在。

有没有其他方法可以检查 HTTPS 或者有人可以告诉我为什么 env('HTTPS') 总是返回 null?

最佳答案

您的编辑是朝着正确方向迈出的一步...

由 Web 服务器设置环境变量,例如 $_SERVER['HTTPS']

如果这没有任何值(value),您只需查看网络服务器 - 在您的情况下为 nginx - 或介于两者之间的任何网络服务器(反向代理等)

我对 nginx 上的 SSL 没有任何经验,但据我所知,你需要确保 nginx 正在发送 fastcgi_param HTTPS on 用于端口 443 上的连接。

添加这样的东西,也许:

server {
listen 443;
server_name example.com;

ssl on;
fastcgi_param HTTPS on;

# ...
}

搜索 "nginx fastcgi_param HTTPS"对于其他配置示例。

我还找到了some other variables这可能会在未来使用。

关于php - CakePHP Force SSL - env ('HTTPS' ) 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com