会话cookie在Chrome和Firefox中运行良好,但在IE9和AJAX请求中,我会丢失所有会话cookie
直接请求查看
公共类地址控制器:控制器
{
[MVCSitemPaNode(Title=“Addresses”,ParentKey=“MyAccount”,Key=“Addresses”)]
公共行动结果索引()
{
....
var memberId=GetKeyValues.GetMemberId();//这非常好用。
...
}
Ajax调用
$.ajax({
url:“地址/CheckPrimaryAddressGood?t=”数学.random(),
类型:“获取”;,
成功:功能(数据){
...
公共类AddressController:控制器
{
公共行动结果检查PrimaryAddressGood()
{
...
var memberId=GetKeyValues.GetMemberId();
...
}
}
公共静态类GetKeyValues
{
公共静态字符串GetMemberId()
{
if(HttpContext.Current.Session[keyCookie]!=null)
{
memberId=GetMemberIdFromSession();
}
else if(HttpContext.Current.Request.Cookies[“token”!=null)
{
memberId=GetMemberIdFromCookie();
}
}
}
从AJAX调用中,我仅丢失了IE9中的Cookie值。我尝试了P3P覆盖,但仍然无法通过此post P3P链接工作
有人有过类似的问题吗?请让我知道如何解决这个问题。我已经花了一天的时间
编辑
我刚刚在Fiddler IE中跟踪到,IE并没有发送头数据,它只是发送“连接=保持活动状态”Pragma=无缓存“接受”*%2f*“接受编码”=gzip%2c+deflate+Accept-Language=en-US&;Host=ebiz.company.com%3a28712“用户代理”=Mozilla%2f5.0+(兼容的%3b+MSIE+9.0%3b+Windows+NT+6.1%3b+WOW64%3b+Trident%2f5.0)&;Origin=http%3a%2f%2febiz.spe.org%3a28712}
但是Chrome:{Connection=keep alive&;Accept=*%2f*&;Accept Encoding=gzip%2c+deflate%2c+sdch&;Accept Language=en-US%2cen%3bq%3d0.8&;Cookie=ASP.NET\u SessionId%3d2a4tr1ymierclqsfxyfahqbc%3b+\uu session%3a0.56547616667181%3showwarning%3dtrue%3b+\uu session%3a0.5654767676667181%3aBaddresswarning%false%3b+>
为什么?
这些只是一些想法,可能会有所帮助(你现在可能已经读过或尝试过了)。似乎没有什么灵丹妙药
其他一些问题也有类似的问题,这些问题似乎并不完全是你的问题(特别是在你尝试P3P之后)。此外,互联网上也有很多帖子,都围绕着同样的几个问题
Internet Explorer 9 AJAX请求上没有会话cookie
Cookie被阻止/未保存在Internet Explorer的IFRAME中
一些想法:
- 一个答案在url中有下划线问题。您没有
但是你能尝试一个没有随机参数的干净的吗
以防它不喜欢那样 - 很多关于做这件事有困难的帖子
从iframe中。如果没有iframe,这不是
问题 - P3P,你说你试过了;我看到一条评论,标题
必须对每个请求进行设置,而不仅仅是那些正在寻找的请求
会话/cookies - 跨域/CORS问题?看起来不像
使用您的根相对url - 在另一台电脑上试试IE9?傻,
但可能是浏览器上的一些模糊设置;区域等 -
fiddler是否在您的站点上浏览的常规页面上显示会话id?(只是为了确保它不是站点范围的,而不仅仅是这个ajax调用)
-
我通常发布ajax而不是Get(只是有很多数据),然后
让会话工作。这也避免了需要破坏缓存
随机参数 -
我使用的是很好的旧web表单,而不是mvc,并且发布到asmx.On
asmx方法,我需要修饰服务器端方法//jquery.ajax()调用需要ScriptService和ScriptMethod。会话需要jquery.post()和WebMethod时不需要它们。 [WebMethod(EnableSession=true)] [脚本方法] 公共字符串DoSomething()。。。