【问题标题】:How to force https in CakePHP without redirect from http?如何在 CakePHP 中强制 https 而不从 http 重定向?
【发布时间】:2014-12-09 04:18:37
【问题描述】:

我想为我的 CakePHP 应用程序使用 https。

我发现一些文章解释了如何在 CakePHP 中强制 https (http://blog.andolasoft.com/2013/07/ssl-authentication-using-security-component-in-cakephp.html)

但问题是我使用的是负载均衡器 (AWS),所以如果我使用重定向(重定向循环),我就会遇到问题。

有人有这个问题的经验吗?

如何在 CakePHP 中强制 https 而不从 http 重定向?

非常感谢。

【问题讨论】:

标签: php cakephp


【解决方案1】:

我在没有 https 的服务器上使用 CakePHP 2,但激活了 cloudflare(使用 https)。所以 CloudFlare 给我 https 给最终用户。这是我添加到我的 /app/webroot/index.php 以使其工作的内容:

function isSSL(){
    if( !empty( $_SERVER['https'] ) )
        return true;
    if( !empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' )
        return true;
    return false;
}

define('IS_IN_PRODUCTION', 1);
if( !isSSL() && IS_IN_PRODUCTION > 0){
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

希望对你有帮助!

【讨论】:

  • define('IS_IN_PRODUCTION', 0); 在部署到生产环境时必须是1
  • 是的,IS_IN_PRODUCTION 必须为 1 才能激活。
  • 这也适用于 CakePHP 3。我读过的所有其他方法都会在我的生产主机上引起重定向循环。谢谢!!
  • 另一种选择可能是使用一个单独的配置文件,因为 index.php 默认不会被 git 忽略。
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 2016-11-14
  • 2012-05-27
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
相关资源
最近更新 更多