Chrome 和 IE 不发送 ASP.NET_SessionID - 即会话变量丢失?
Posted
技术标签:
【中文标题】Chrome 和 IE 不发送 ASP.NET_SessionID - 即会话变量丢失?【英文标题】:Chrome and IE not sending ASP.NET_SessionID - i.e. session variable gets lost? 【发布时间】: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 标签。 【参考方案1】:回答我自己的问题并可能节省几个小时:
问题是我在会话 id cookie 上设置了 domain
属性。
我为什么要这样做?
我从第 163 页的“Proffesional ASP NET MVC 3”一书中复制了它,打算设置 HttpOnly
标志。引用:
您可以通过添加 简单标志:HttpOnly。您可以像这样在 web.config 中进行设置:
<httpCookies domain=”String” httpOnlyCookies=”true” requireSSL=”false”/>
我因不假思索地复制粘贴而受到惩罚。
所以,当我把它改成domain=""
时,问题就解决了。
有趣的是,FF 忽略(或滥用)了这个属性,但这是另一个话题。
【讨论】:
以上是关于Chrome 和 IE 不发送 ASP.NET_SessionID - 即会话变量丢失?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Chrome 和 IE 将“Mozilla 5.0”放在它们发送到服务器的 User-Agent 中? [复制]
跨域的 jQuery AJAX 对于 Chrome 等工作正常,但不能在 IE10 中发送数据,也不能在 IE <= 9 中发送请求