自从 Chrome 79 发布以来,我似乎无法弄清楚这个奇怪的事情。
在您注册的网站上。注册后需要付费。付款发生在另一个网站上,Buckaroo 是付款提供商。付款后,您将再次被重定向到我们的网站(通过 POST 请求)。这是有趣的事情开始的地方,起初您已登录,因此您应该仍然登录,因为您离开了很短的时间。但是 session 似乎无法识别,因此您将被重定向到登录页面。但是,如果我从前一步采用相同的重定向 URL,它会按预期工作。
所以看起来它与从其他域或其他域重定向有关吗?
我在代码中搜索过,在调试时我发现似乎找不到 session 。这部分代码的最后一次更改是一年多前的,从那以后一直运行得很完美。这是我没有添加到这个问题的代码示例的方式。我已经搜索了 Chrome 79 的发行说明,但仍然没有任何线索。
任何线索/想法下一步在哪里看?
- 编辑 -
我发现 sessionID 实际上发生了变化..
在我的网站上,选择付款方式(确认后您将被重定向):
HttpContext.Session.SessionID: "qibxyymxhvev231n01ndlkyx"
从支付提供商返回:
HttpContext.Session.SessionID: "mwkfptaod0hpyuedvaimtqd0"
再次刷新网站:
HttpContext.Session.SessionID: "qibxyymxhvev231n01ndlkyx"
最佳答案
面临同样的问题。
原来它与微软有关。
在 WebConfig 中添加 CookieSameSite="NONE"可能会解决您的问题。
我在我的配置中添加了这个,它解决了这个问题。
<system.webServer>
<rewrite>
<outboundRules>
<clear />
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
<conditions> </conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
关于asp.net-mvc - 由于 Chrome 79 session "lost"重定向后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59826498/