【发布时间】:2012-02-04 11:08:03
【问题描述】:
我尝试了很多不同的解决方案(here、here、here、here),但几乎所有解决方案都会导致 404 或无限循环。
最后我找到了this question,它似乎最接近工作;但是当我尝试加载我希望要求 SSL 的操作之一时,它也会在 Firefox 中导致错误:
页面未正确重定向
Firefox 检测到服务器正在重定向请求 这个地址永远不会完成。
此问题有时可能是由于禁用或拒绝 接受 cookie。
最后通过一堆调试,我发现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;
...
应用控制器
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,因此检查条件始终为 false,并使其重定向到 HTTPS URL,即使它已经存在。
还有其他方法可以检查 HTTPS,或者有人可以告诉我为什么 env('HTTPS') 总是返回 null?
【问题讨论】:
标签: php cakephp ssl https cakephp-1.3