【问题标题】:Session Variables not saved when page is in an iFrame页面位于 iFrame 中时未保存会话变量
【发布时间】:2011-09-16 03:50:33
【问题描述】:

我有一个带有列表框控件的 aspx 页面。列表框由页面加载时从服务中检索到的集合填充。当用户从列表框中选择一个项目时,页面回发,在重新加载之前将检索到的对象添加到会话中。在重新加载时,我使用会话对象而不必再次调用服务。

这一切正常,直到我从 iFrame 中访问该页面。当页面位于 iFrame 中时(Session["blah"] 为空),不会检索 Session 对象。当页面不在 iFrame 中时,此代码可以完美运行。

我正在使用 IIS7 和 windows server 2008。我需要在 ISS 中做些什么来允许在 iFrame 中使用 Session 变量吗?有谁知道可能导致这种情况发生的其他任何事情?

谢谢, 尼尔

【问题讨论】:

  • 你是在所有浏览器中还是只有IE有这个问题?
  • 您是否在框架内回帖。还是您要发回容器页面?如果是后者,它将不知道用户对框架中的页面所做的更改。
  • 不,iFrame 对父页面没有任何了解,也不需要它。父页面仅用于导航。我只使用 IE,因为它是 Dynamics CRM 2011 中的一个页面,它只适用于 IE,所以我无法用其他浏览器对其进行测试。我将尝试使用 iFrame 创建一个基本的 html 页面,看看在 IE 和其他浏览器中是否发生同样的问题
  • 其实没关系,我只是清除了 `C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files` 中的文件并重新启动了 IIS,一切正常。
  • @neil:考虑使用这些信息创建一个答案,以便这个问题可以被接受和关闭,其他人可能会从您的解决方案中受益。

标签: asp.net session iis-7


【解决方案1】:

IE 对 iframe 中加载的第 3 方内容的信任度较低。这会阻止会话 cookie。

您可以通过在 IIS 中设置 P3P 标头来解决此问题:

Name = p3p
Value = CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"

另见

【讨论】:

    【解决方案2】:

    其实没关系,我只是清除了C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files中的文件并重新启动了IIS,一切正常

    【讨论】:

    • 正是我刚刚所做的...... .ASP.net 中的缓存控制非常糟糕,为什么这个东西不会使代码本身过期我只是想知道......为什么是微软。
    【解决方案3】:

    要在 iFrame 中启用会话: 互联网选项 -> 隐私 -> 高级 -> 勾选“始终允许会话 Cookie”

    【讨论】:

    • 您不能合理地期望您网站的每个访问者都这样做
    【解决方案4】:

    就我而言,该项目是 .net 框架 4.6.1。我已经升级到 4.7.2 版本并将下面的密钥添加到 web.config

    <system.web>
        <sessionState cookieSameSite="None"/>
    

    这样第三方 iframe 会话就开始工作了。

    在进行此更改之前,最好阅读此内容 https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite

    【讨论】:

    • 非常感谢您的回答。这个答案解决了我的问题。
    • 谢谢!当我使用 Target .NET 4.8 版在 Azure 上部署网站时,它对我有用。无法在使用旧 Windows 2009 R2 的 QA 服务器上运行。
    • 可能需要使 cookie 安全:
    【解决方案5】:

    自 2021 年起,Chrome(可能还有其他)要求 cookie 是安全的。

    这可以通过这种方式实现:

    <system.web>
      <httpCookies httpOnlyCookies="true" requireSSL="true" sameSite="None" />
    </system.web>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多