【问题标题】:Iframe occasionally loses session cookiesiframe 偶尔会丢失会话 cookie
【发布时间】:2020-05-02 13:26:40
【问题描述】:

有时在 iframe 中提交支付表单时,来自支付网关的回发会导致用户被注销,因为请求缺少 ASP.NET_SessionId cookie(我们使用的是状态服务器)。我检查了这些日志,这不是导致问题的应用程序池回收。它也只发生在生产环境中。我可以看到会话 cookie 在表单提交之前就存在,所以我不知道它在哪里丢失。

【问题讨论】:

    标签: asp.net-mvc iframe session-cookies payment-gateway session-state


    【解决方案1】:

    您需要检查您是否不受最近推出的 KB4524420 的影响:

    现在,当 HttpCookie.SameSite 值为“无”时,ASP.NET 将发出 SameSite cookie 标头,以适应 Chrome 中即将对 SameSite cookie 处理进行的更改。作为此更改的一部分,FormsAuth 和 SessionState cookie 也将使用 SameSite = 'Lax' 而不是之前的默认值 'None' 发出,尽管这些值可以在 web.config 中覆盖。

    您必须在会话状态标签中设置 cookieSameSite= "None" 以避免此问题。

    <sessionState cookieSameSite="None"  cookieless="false" timeout="360"> 
    </sessionState>
    

    但是,在某些情况下,这会破坏 Safari(v13 之前的 iOS 和 MacOS 中的 Safari),因此您可能需要考虑添加两个 cookie,一个具有 SameSite=None,另一个没有为 SameSite 指定任何值)。这是由于 Safari 中的一个错误导致 SameSite=None 变为 SameSite=Strict。

    【讨论】:

    • 不幸的是,这种方法不走运。回发请求中仍然缺少 cookie。
    • 帮助我解决了 SharePoint Online 应用程序 Webpart 在 iframe 中丢失会话 cookie 中的类似问题。谢谢
    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2014-08-14
    • 2015-07-11
    • 1970-01-01
    • 2011-11-04
    • 2015-12-07
    相关资源
    最近更新 更多