小编E. *_*gür的帖子

浏览器不会在支付网关向我们网站的发布请求上设置 ASP.NET_SessionId cookie

我们在 Web 应用程序的支付过程中遇到了一个奇怪的问题,导致会话数据丢失。

在这个过程中,在我们的结帐页面用户被重定向到支付提供商的页面后,只要他/她在那里完成,就会被重定向回我们的网站(到我们指定的网址)。最后一个重定向是通过浏览器对支付提供商的 html 代码的评估完成的,该代码基本上由一个发布到我们网站的表单和几行在页面加载时发布该表单的 javascript 代码组成。此时浏览器发出 post 请求,但没有设置“ASP.NET_SessionId”cookie,该 cookie 存在于先前对完全相同的域(我们的应用程序的域)发出的请求中。更奇怪的是,它设置了我们使用的另一个名为“AcceptCookie”的 cookie。它只是简单地选择删除“ASP.NET_SessionId”cookie。

为了说明这种情况,我截取了一些屏幕截图。(在这些屏幕截图中,橙色和绿色矩形包含完全相同的值。)

  1. 这是当用户按下“签出”按钮时(向我们的应用程序)发出的请求。在此请求之后,用户被重定向到支付提供商的页面。

退房要求

  1. 这是用户在那里完成后由支付提供商提供的最后一页。如您所见,它只是一个简单的表单,会在页面加载时自动发布到我们的域中。

支付提供商的最终回应

  1. 但是这个发布请求不包括“ASP.NET_SessionId”cookie,这会导致获取新的会话 ID 和丢失以前的会话数据。同样,只缺少“ASP.NET_SessionId”,而不是另一个名为“AcceptCookie”的。

将用户带回我们网站的发布请求(在上一步中使用 javascript 制作)

最后我们认为在旧版本的浏览器上不会出现这个问题。在 Firefox 52 上它就像一个魅力,但在 Firefox 71 上会发生上述问题。

有任何想法吗?

注意:这是一个 ASP.NET MVC 应用程序,其 targetFramework="4.5.2"

祝你今天过得愉快。

asp.net cookies session

15
推荐指数
1
解决办法
6417
查看次数

标签 统计

asp.net ×1

cookies ×1

session ×1