【问题标题】:Chrome and IE not sending ASP.NET_SessionID - i.e. session variable gets lost?Chrome 和 IE 不发送 ASP.NET_SessionID - 即会话变量丢失?
【发布时间】:2011-11-08 13:57:20
【问题描述】:

我有一个 ASP NET MVC 3 应用程序,其页面设置了一些参数(比如说region='North')。

当它被发送回服务器时,我将此参数设置为会话变量并返回三个图像,它们的src 属性设置为三个不同的controller/getImageXy url。

现在,这些控制器方法执行查询(基于会话变量)并返回图像。 它有点简洁,用户得到一个快速回复,然后这些图像被填充(异步)。

在 FF 中一切正常。初始回复有一个 ASP.NET_SessionID 集(cookie)。

FF,然后,使用相同的 cookie 获取三个图像,一切都很好。

但是,Chrome 和 IE 却没有。

他们只是发送__RequestVerificationToken_Lw__。 当然,我的会话变量 ("region") 会丢失。

谢谢,

伊戈尔

【问题讨论】:

  • 您使用的是 IFrame 吗?我最近遇到了一个类似的问题,但它只在涉及 IFrame 时出现在 IE 和 Chrome 中。
  • 不,它几乎是一个带有三个 img 标签的 body 标签。

标签: asp.net-mvc session-state session-variables session-cookies


【解决方案1】:

回答我自己的问题并可能节省几个小时:

问题是我在会话 id cookie 上设置了 domain 属性。

我为什么要这样做? 我从第 163 页的“Proffesional ASP NET MVC 3”一书中复制了它,打算设置 HttpOnly 标志。引用:

您可以通过添加 简单标志:HttpOnly。您可以像这样在 web.config 中进行设置:

<httpCookies domain=”String” httpOnlyCookies=”true” requireSSL=”false”/>

我因不假思索地复制粘贴而受到惩罚。 所以,当我把它改成domain="" 时,问题就解决了。

有趣的是,FF 忽略(或滥用)了这个属性,但这是另一个话题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2012-06-06
    • 1970-01-01
    • 2011-12-05
    • 2011-03-09
    • 2012-10-18
    相关资源
    最近更新 更多