簡體   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