IE 10 用 document.cookiec 获取不到cookiee

IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie问题_C# 博文_CS程序员之窗
热门搜索: ,
您的位置:
&&&&&&&&&&&IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie问题
IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie问题
来自:博客园&
字体大小:【&&】
摘要:本文介绍IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie问题,并提供详细的示例代码供参考。
  你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6、7、8、9下都跑的好好的,唯独到了IE10、11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次。那么,我们就来看看,这个问题的前因后果。
  先说下这2次的使用场景,一次是在某页面中,先存Cookie,然后再入库记录相关数据,但是发布到生产环境后,入库操作没有发生;后来通过打印日志发现问题卡在这里:
if (Request.Browser.Cookies)
  也就是说,在客户端是IE10的环境下,这里返回False!纳尼,IE10默认配置下不支持Cookie?微软你玩我的吧。
  第二次是某地市的升级测试,在IE10的环境下,自服务网站登录失败;这个问题很奇怪,因为之前已经升级过多个地市了,IE10使用都正常。这极大的引起了码农的兴趣,由此引出了此文。
  描述完场景,我们就来分析分析。虽然直觉告诉码农,可能是Cookie的读取或写入有问题,但毕竟直觉这玩意儿不靠谱,咱还是得用事实和证据说话。国际惯例,先抓个HTTP包瞧瞧:
上图是IE10下登录失败时,服务端返回的HTTP响应头;下图是其它浏览器正常登录时,服务端返回的HTTP响应头,注意红色框框标注部分;
导致问题的直接原因,很清晰了吧:服务器响应请求时,没有回发 Set-Cookie 头,没有这个头,客户端浏览器就无法写入Cookie。所以基于Form认证(在Cookie中会存入加密票据)的自服务网站,会无法登录。
  这时,你可能会觉得奇怪了,为啥只有IE10、IE11 会这样,其它IE浏览器跑的妥妥的呢?嗯,为了满足你的好奇心,我们继续分析。
  如果你的机器上装了.NET的FrameWork,打开这个目录 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers。科普下,文件夹里面的.browser文件是全局访问的,用于标识发出请求的浏览器,并标识这些浏览器具备的功能。如果要做定制修改(比如针对特定移动设备),只需把相应的.browser文件复制到应用程序的\App_Browsers文件夹中修改即可。先用记事本打开 ie.browser 这个文件,
注意图中标注为红色部分的正则表达式;然后再来看看,微软公布的IE10的User-Agent&:&Mozilla/5.0 ( MSIE 10.0; Windows NT 6.1; Trident/6.0),MSIE版本号由以前的1位数字(5-9)变成了现在的2位数字(10),很明显,无法匹配上面的正则了吧。所以,由于无法正确识别IE10的User-Agent,所以ASP.NET把它看做是未知的浏览器,认为它不支持Cookie,由此而产生了一系列与Cookie相关的问题。
& & 问题的根本总算是知道了,那么该如何解决呢?
&&&&& 其实这个问题已经经过微软官方确认,是IE10的Bug,其实也可以认为是ASP.NET 2.0、3.5、4.0的Bug,因这些版本都无法识别 IE10的User-Agent。微软专门发布了HOTFIX来修复这个问题:
KB2600088:&
KB2608565:&
KB2600100:&
&&&&& 码农单位的很多Windows服务器都会自动更新安装补丁,所以场景2中说的其它地市使用正常,其实是因为这些服务器已经打上了补丁,一些新上架、重装系统的服务器或自动更新没有设置的服务器就很可能会出现这类问题。。。
  如果对服务器没有操作权限或者不想打补丁这么麻烦,比如码农我,也可以在网站的根目录,新增一个浏览器定义文件,步骤如下:
1、添加一个&App_Browsers&文件夹&;
2、添加一个&*.browser&后缀的文件,如 IE10.browser;
3、在文件中添加如下内容(下面的配置表示,对所有的设备和浏览器,都支持Cookies):
&browsers&&
&&&& &browser refID=&Default&&&
&&&&&&&&& &capabilities&&!-- To avoid wrong detections of e.g. IE10 --&&
&&&&&&&&&&&& &capability name=&cookies& value=&true& /&&
&&&&&&&&&&&& &capability name=&ecmascriptversion& value=&3.0& /&&
&&&&&&&&& &/capabilities&&
&&&&& &/browser&&
&/browsers&
这是针对某个站点的配置,如果既不想打补丁又想对服务器上的所有站点做全局配置,要如何处理呢?很容易,其实上面已经明示,问题是出在ie.browser 这个文件的配置上,所以我们只需在原来的基础上,加上这一串 &\d{2,}$&,使ASP.NET 能识别IE10的User-Agent就可以了。修改后的配置如下:
&capability name=&majorversion& match=&^[6-9]|\d{2,}$& /&
修改完后,再到命令行下将修改后的 .browser 文件编译成程序集并安装到GAC中,如果是Windows Server 2008、Win7,要以管理员身份运行命令行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regbrowsers.exe -i
  如果是IE11,由于其User-Agent &Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko& 变化更大,所以需把下面这串加入来做匹配:
&!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko --&
&browser id=&IE11Preview& parentID=&Mozilla&&
&&& &identification&
&&&&&&& &userAgent match=&Trident/(?'layoutVersion'\d+).*rv:(?'revision'(?'major'\d+)(\.(?'minor'\d+)?))& /&
&&&&&&& &userAgent nonMatch=&MSIE& /&
&&& &/identification&
&&& &capabilities&
&&&&&&& &capability name=&browser&&&&&&&&&&&&&& value=&IE& /&
&&&&&&& &capability name=&layoutEngine&&&&&&&&& value=&Trident& /&
&&&&&&& &capability name=&layoutEngineVersion&& value=&${layoutVersion}& /&
&&&&&&& &capability name=&isColor&&&&&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&screenBitDepth&&&&&&& value=&8& /&
&&&&&&& &capability name=&ecmascriptversion&&&& value=&3.0& /&
&&&&&&& &capability name=&jscriptversion&&&&&&& value=&6.0& /&
&&&&&&& &capability name=&javascript&&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&javascriptversion&&&& value=&1.5& /&
&&&&&&& &capability name=&w3cdomversion&&&&&&&& value=&1.0& /&
&&&&&&& &capability name=&ExchangeOmaSupported& value=&true& /&
&&&&&&& &capability name=&activexcontrols&&&&&& value=&true& /&
&&&&&&& &capability name=&backgroundsounds&&&&& value=&true& /&
&&&&&&& &capability name=&cookies&&&&&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&frames&&&&&&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&javaapplets&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&supportsCallback&&&&& value=&true& /&
&&&&&&& &capability name=&supportsFileUpload&&& value=&true& /&
&&&&&&& &capability name=&supportsMultilineTextBoxDisplay& value=&true& /&
&&&&&&& &capability name=&supportsMaintainScrollPositionOnPostback& value=&true& /&
&&&&&&&& &capability name=&supportsVCard&&&&&&&& value=&true& /&
&&&&&&& &capability name=&supportsXmlHttp&&&&&& value=&true& /&
&&&&&&& &capability name=&tables&&&&&&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&supportsAccessKeyAttribute&&&& value=&true& /&
&&&&&&& &capability name=&tagwriter&&&&&&&&&&&& value=&System.Web.UI.HtmlTextWriter& /&
&&&&&&& &capability name=&vbscript&&&&&&&&&&&&& value=&true& /&
&&&&&&& &capability name=&revmajor&&&&&&&&&&&&& value=&${major}& /&
&&&&&&& &capability name=&revminor&&&&&&&&&&&&& value=&${minor}& /&
&&& &/capabilities&
&/browser&
&  三板斧搞定!
作者:maoniu602
上一篇:&&&&&&下一篇:
相关文章:
该文章已有条评论
作品版权作者所有,如果无意之中侵犯了你的版权请来信告知,本站将在3个工作日内删除。
CopyRight@
All rights reserved
&&&&苏ICP备号
客户服务信箱:starts_查看: 2632|回复: 6
我的火车头获取到的cookie总是不对,采集不出东西
火车车厢 节
IE也设为默认浏览器了,也是IE8的版本了
获取的cookie就是不对
有哪位知道怎么解决,帮我远程看下,谢谢了
火车车厢 节
zh&&这个还要整到 cookie啊&&没整过
想找友情链接就上互淘友链自动交换平台
火车车厢 节
选择用户本地IE,网站退出登录,重新登录,随便点一个链接,等待网页完全打开后点完成。
没完全打开不能获取到正确Cookies.
火车车厢 节
那你也可以使用抓包工具来获取一下cookies值,抓包工具的话可以使用fiddle2
火车车厢 节
yaoyaobl 发表于
zh&&这个还要整到 cookie啊&&没整过
你好,还在吗, 我在淘宝上让别人给我写的规则,就是我的cookie总是不对,都三天了您能帮我远程看下嘛,不知道是不是我操作出问题
火车车厢 节
这个你用使用fiddle2
抓一个就行了呢
火车车厢 节
http://www.zhibao17.net/
温馨提示:建议您联系官方定制服务,通过官方支付方式完成支付。您与其他非官方账号发生的交易,我方概不承担责任。网络有风险,交易需谨慎
Copyright &
&Template by
All Rights Reserved.
Powered by&&&&完整获取webBrowser1.Document.Cookie取不到HttpOnly的Cookie
完整获取webBrowser1.Document.Cookie取不到HttpOnly的Cookie
完整获取webBrowser1的Cookie
HttpOnly的Cookie
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行java 获取不到 cookie - 我的异常网当前位置:& &&&java 获取不到 cookiejava 获取不到 cookie&&网友分享于:&&&搜索量:331次
场景:java 为何获取不到ie的cookie值java 为什么获取不到ie的cookie值
自己写的程序为什么java获取不到ie的cookie?自己本地程序添加了cookie,然后获取,但获取不到,原因很简单,是因为你的本地程序路径用了localhost,如果你把localhost改为127.0.0.1就可以获取到了,如果用localhost好像ie并没有添加成功(但是火狐却可以取到cookie),当然也可以通过电脑是否有cookie文件来判断cookie是否生成了(如附件中图片来查看cookie是否生成【以火狐为例】)
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关文章 12345678910 Copyright & &&版权所有温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
在百度上找了一大圈也没解决,后来请教了OA厂商的一位工程师,给出了解决办法。在IE浏览器的兼容性视图里设置,设置方法: 【工具】---&【兼容性视图设置】---&【添加你要访问的网站】就OK了
阅读(4915)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'系统需要使用cookie,请打开浏览器的cookie选项',
blogAbstract:'前几天公司有员工的电脑安装了windows8 ,浏览器的最低版本也变成了IE10.结果在访问OA的时候就提示错误:“系统需要使用cookie,请打开浏览器的cookie选项”。更可恨的是用chrome核心的360极速浏览器也提示这个错误。在百度上找了一大圈也没解决,后来请教了OA厂商的一位工程师,给出了解决办法。在IE浏览器的兼容性视图里设置,设置方法: 【工具】---&【兼容性视图设置】---&【添加你要访问的网站】就OK了',
blogTag:'',
blogUrl:'blog/static/4',
isPublished:1,
istop:false,
modifyTime:2,
publishTime:2,
permalink:'blog/static/4',
commentCount:2,
mainCommentCount:2,
recommendCount:5,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 跳转后获取不到cookie 的文章

 

随机推荐