![](/img/trans.png)
[英]How to access browser's network headers data after getting redirected from payment gateway to my order confirmation page
[英]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/5088147346030592和https://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.