繁体   English   中英

从支付网关返回时,Chrome 丢失了我的会话数据

[英]Chrome loses my session data when returning from the payment gateway

自 8 月初以来,我的用户目前在使用 Chrome 使用 Moneris 进行付款时丢失了他们的会话。 它在 Firefox 下工作得很好。 代码自几年以来一直没有改变,这一切都是自动开始的。

支付“summary.php”页面首先调用网关URL,然后在交易后返回“return.php”页面。 此返回页面仅包含一个表单,用于获取交易密钥并将其发送回网关以进行验证:

<?php
    session_start();
?>
<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <script>
            function verify_transaction() {
                document.getElementById('verify').submit();
            }
        </script>
    </head>
    
    <body onload="verify_transaction()">
        <form id="verify"  name="verify" action="https://www.gateway.com/verify.php" method="post">
            <input type="hidden" name="ps_store_id" value="abcdef">     
            <input type="hidden" name="hpp_key" value="abcdef">
            <input type="hidden" name="transactionKey" value="<?php echo $_POST['transactionKey'] ?>">
        </form>
    </body>
</html>

这里的问题是调用此页面时所有会话数据都消失了。 我也无法将会话存储在任何地方,因为网关无法将我要发送的信息发回给我。

恐怕这可能与 Chrome 的 7 月发布有关,它在评论中有这样的内容:“Same Site Cookie 政策更改开始再次推出”

8 月发布的相同内容:“拒绝不安全的 SameSite=None cookie”,但我不知道如何/从何处着手。

该网站托管在 CPANEL 上,我确保用户一直使用 HTTPS。

有人有建议吗?

编辑:

我刚刚注意到,当我登录和退出网站时,我得到了很多这样的信息:

“与https://google.com/上的跨站点资源关联的 cookie 设置时没有使用SameSite属性。它已被阻止,因为 Chrome 现在仅在跨站点请求中设置了SameSite=None时才提供 cookie和Secure 。您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032查看更多详细信息。”

<?php
session_start();
if(isset($_POST['transactionKey'])) {
    $_SESSION['transKey'] = $_POST['transactionKey']; 
}
?>

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <script>
            function verify_transaction() {
                document.getElementById('verify').submit();
            }
        </script>
    </head>
    
    <body onload="verify_transaction()">
        <form id="verify"  name="verify" action="https://www.gateway.com/verify.php" method="post">
            <input type="hidden" name="ps_store_id" value="abcdef">     
            <input type="hidden" name="hpp_key" value="abcdef">
            <input type="hidden" name="transactionKey" value="<?php echo $_SESSION['transKey']; ?>">
        </form>
    </body>
</html>

验证后销毁会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM