Hello!

关于IE的两三件事

2013-05-20  |  IE JSON COOKIE 

要是你没有被几个IE的问题折磨过,你都不好意思说是做前端的。今天就说说IE的两三件事。

IE对cookie数量及长度的限制

IE6和IE7的早期版本同一个域下都对cookie(包括session cookie)设置了20条的上限。如果超过这个数量,新写入的项会使用一些旧的项消失。在这样的环境下,你的web应用会发生一些莫名其妙的问题。IE可能觉得有些不妥,IE6在sp2版本中增加了cookie的数量,IE7也在后来的补丁中把数量增加到了50个。这里还翻出了一张Internet Explorer 版本信息 在测试时可以对照来看。 不过,只要你发生问题时能怀疑到这上面,确认也很简单,编个程序写上100个cookie让浏览器访问,看系统中的cookie文本中到底记录了多少就完了,我的同事就是这么帮我锁定这个问题的。

参考

第三方cookie读写入问题

什么是第三方cookie?访问a.com上的应用时,程序在客户端上种了cookie这算是第一方cookie。在a.com的页面上还有一个请求是访问b.com的资源,b.com也种下属于自己域名的cookie。这个cookie相对a.com来说就是一个第三方cookie。异步单点登录就是一个典型的应用场景。a.com异步访问授权服务b.com,用户登录后,种下认证cookie。每次异步请求b.com授权时都会把这个认证的cookie携带过去。如果有效则不用再次登录。在默认情况下IE和safari都是阻止第三方cookie的,好在IE还可以使用P3P协议来处理。safari就让开发者很纠结了。值得注意的事,流量统计中大多使用第三方cookie,但GA种下的cookie并没有使用第三方cookie,而是当前域的cookie也就是第一方cookie。

参考

IE8中的JSON原生方法

IE8提供了原生JSON类,这是好事情不用加载JSON2.js了。但他多做了些事情,其中JSON.stringify方法会对中文做unicode转码。如果你的json对象通过JSON.strignify转换后发送到服务端,刚好服务端不做什么处理,那记录下来的数据肯定有问题了。网上有一些客户端下的hack方法,我觉得服务端做正确的转换就可以了。

参考