【问题标题】:Session variables getting unset after installing SSL through AWS Cloudfront通过 AWS Cloudfront 安装 SSL 后,会话变量未设置
【发布时间】:2020-01-05 10:07:40
【问题描述】:

我在 AWS EC2 上有一个 PHP Web 应用程序。只有一个实例。

我最近通过 AWS 证书管理器安装了 SSL,还安装了 AWS Cloudfront。

在我安装 SSL 并配置云前端之前一切正常。

现在,当我从一个 php 页面移动到另一个页面时,我的会话变量正在取消设置

示例:

Test.php

<?php

session_start();
$_SESSION['test'] = "first";
$_SESSION['test1'] = " last";
echo $_SESSION['test'];
?>
<html>
    <head></head>
    <body>
        <a href="test2.php">CLICK ME</a>
    </body>

</html>

结果

first CLICK ME

Test2.php

<?php
session_start();
echo $_SESSION['test'];
echo $_SESSION['test1'];
?>

结果

Test2.php prints nothing. 

这意味着当我点击 Test.php 时会话变量没有设置

为什么会这样?它在我本地的普通 HTTP 设置中运行良好。

【问题讨论】:

    标签: php session-variables amazon-cloudfront


    【解决方案1】:

    AWS Cloudfront中有个设置“FORWARD COOKIES”...需要设置为“ALL”...否则云前端不会去原点获取对象。

    解决了。谢谢大家。

    【讨论】:

    • 更准确地说,否则,CloudFront 将剥离 cookie,将请求发送到源,并缓存该响应以供将来的请求使用。对于不需要 cookie 的请求,您不希望转发 cookie,因为这会显着减少缓存命中的数量,因此您可能希望为 /*.png/*.css 等不带 cookie 的事物创建新的缓存行为白名单,如果他们不需要身份验证/会话。
    猜你喜欢
    • 2014-12-11
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2016-03-20
    相关资源
    最近更新 更多