当用户从支付网关Chrome返回时,浏览器会清除会话Cookie

问题描述

在最近的浏览器更新(例如Google Chrome v84及更高版本)之后,应用程序面临的持续会话问题。

使用不兼容的浏览器版本浏览应用程序时,该应用程序无法跨通过支付网关进行的交易进行持久会话。因此,从付款网关重定向用户后,该用户自动注销。因此,用户不会被识别为发起付款的客户。

此问题通常发生在Chrome 80+上,所有其他浏览器(Firefox,Safari,Edge,三星Internet等移动浏览器)都可以正常工作。较旧版本的Chrome也可以正常运行(

如何解决

解决方法

要解决上述问题,应在应用程序虚拟主机(例如Apache vhost)的应用程序/代理服务器中配置以下cookie修改标头。

Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=None

应用上述配置后,应重新启动服务器。

请注意,如果应用程序/代理服务器与Apache不同(例如:nginx),则应相应更改上述配置。

如果以上配置成功,则会在浏览器开发人员工具的Cookies(例如:firebug)下注意到以下更改

HttpOnly&Secure的值应为true,SameSite的值应为none

enter image description here

Read more

,

谷歌浏览器不会删除会话 cookie,它只是不会在来自 3rd 方域的发布请求中设置它。因此,您可以创建一个用于从支付站点返回的界面页面,并将发布的内容保存在会话中,然后将用户重定向到主支付确认页面。此外,您可以将数据重新发布到确认页面,而无需使用 HTML 表单保存它们。请注意,您不应该检查用户是否登录或界面页面上的任何 cookie。

Payment site ==post==> Interface page (cookie doesn't set)
Save the posted date to session
Interface page ==redirect==> confirmation page (cookie does set)