当页面位于iFrame中时,会话变量不会保存

时间:2011-06-16 07:57:01

标签: asp.net session iis-7

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

这一切都正常,直到我从iFrame中访问该页面。当页面在iFrame中时,不会检索Session对象(Session [“blah”]为null)。当页面不在iFrame中时,此代码可以正常工作。

我正在使用IIS7和Windows Server 2008.在ISS中我是否需要做任何事情来允许在iFrame中使用Session变量?有没有人知道可能导致这种情况发生的任何其他事情?

谢谢, 尼尔

5 个答案:

答案 0 :(得分:10)

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

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

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

IIS settings P3P response headers

另请参阅

答案 1 :(得分:4)

实际上没关系,我只是清除了C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files中的文件并重新启动了IIS并且它全部正常工作

答案 2 :(得分:4)

就我而言,该项目是.net Framework 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

答案 3 :(得分:0)

自 2021 年起,Chrome(可能还有其他)要求保护 cookie。

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

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

答案 4 :(得分:-3)

要在iFrame中启用会话: InterNet选项 - &gt;隐私 - &gt;高级 - &gt;选中&#34;始终允许会话Cookie&#34;