`
llyzq
  • 浏览: 576441 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

IE对Cookie的path处理

阅读更多

转自:http://www.mzone.cc/article/363.html

 

      昨天在部署系统时发现一个看来很奇怪的问题,就是在google浏览器Chrome和Firefox下都运行的非常正常,但在IE内核的浏览器中总是有一个cookie无法取到的问题。无意间google下发现网上有很多针对IE8的cookie丢失的问题讨论,就想是不是IE8的cookie处理机制导致的,其实后来发现不是,算是走了弯路。因为本地运行正常并且是IE中都跑的蛮ok的,一到服务器上就出现了问题,具体的情形是我在网页中有一段类似如下的脚本引用:

  1. <script language="javascript" src="http://abc.mydomain.com/p1/check"></script>

      这段脚本就是向服务器abc.mydomain.com请求一段js,按理来说请求这段js时浏览器应该同时附带该域下的cookie到服务器上,服务器程序会解析到cookie并返回对应的信息,我出现的问题就是IE中根本就不发送cookie到服务器。而之前设置cookie的java代码类似如下:

  1. Cookie cookie = new Cookie("name", "value");
  2. cookie.setMaxAge(-1);
  3. cookie.setPath(request.getContextPath());
  4. response.addCookie(cookie);

      这段脚本看起来没有什么错误,确实是在本地测试时一切正常。其实这个最大的问题就是setPath这条语句了,因为我这里是动态获取应用程序的上下文路径作为cookie的根路径,在本地测试时由于都有contentpath,所以不会有什么问题。但一旦部署到服务器后由于是独立域名部署根contextpath,所以取到的contextpath是空串,可惜的是IE对如下的cookie路径设置和chrome和firefox是完全不一样的:

  1. cookie.setPath("");

      实践证明IE会忽略这个path,而chrome和firefox则会认为是设置了。因为根据cookie规范,如果设置了path,那么只有当访问路径中包含了这个path的url时才会发送cookie到服务器;如果没有设置path,那么只有当访问和设置cookie同样的路径时才会发送cookie到服务器。可惜的是这里IE忽略了,因此会按照后面的来处理cookie,而chrome和firefox则会认为设置了path,那么理所当然的任何访问路径都会携带cookie,这也就导致了我前面所说的情况了。

PS:cookie规范文档请查看这里http://curl.haxx.se/rfc/cookie_spec.html

分享到:
评论

相关推荐

    cookie中的path与domain属性详解

    1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为...2.path表示cookie所在的目录,asp.net默认为/,就是根目录。在同一个服务器上有目录如下:/te

    浅析Cookie中的Path与domain

    Path – 路径。指定与cookie关联的WEB页。 值可以是一个目录,或者是一个路径。 如果//www.jb51.net/test/index.html 建立了一个cookie,那么在//www.jb51.net/test/目录里的所有页面,以及该目录下面任何子目录里的...

    PHP100视频教程 32:PHP5中Cookie与 Session详解

     (2)、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。 (3)、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。3、...

    PHP100视频教程 (三十二、PHP5中Cookie与 Session详解)

    (2)、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。 (3)、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。 3、...

    js设置cookie过期及清除浏览器对应名称的cookie

    代码如下: function ClearCookie() { var expires = new Date(); expires.setTime(expires.getTime() – 1000); //当前时间减去一秒,相当于立即过期(可以增减) [removed] = “appCode=’222”’;path=/;expires=” +...

    PHP100视频教程 32:PHP5中Cookie与 Session详解.rar

     (2)、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。  (3)、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。 3...

    用header 发送cookie的php代码

    用header 发送cookie header(“Set-Cookie: testcookie=中文; path=/; domain=.phpv.net; expires=”.gmstrftime(“%A, %d-%b-%Y %H:%M:%S GMT”,time()+9600)); 请将path=/; domain=.phpv.net;改为自己...

    python处理cookie详解

    domain=baidu.comexpires是cookie的生存周期,path是cookie的有效路径,domain是cookie的有效域. 路径”path”用于设置可以读取一个cookie的最顶层的目录. 将cookie的路径设置为你的网页最顶层的目录可以让该该目录...

    javascript设置和获取cookie的方法实例详解

    function setCookie(cookieName,cookieValue,cookieExpires,cookiePath) { cookieValue = escape(cookieValue);//编码latin-1 if(cookieExpires=="") { var nowDate = new Date(); nowDate.setMonth(nowDate....

    python使用cookie库操保存cookie详解

    expires是cookie的生存周期,path是cookie的有效路径,domain是cookie的有效域. 路径”path”用于设置可以读取一个cookie的最顶层的目录.将cookie的路径设置为你的网页最顶层的目录可以让该该目录下的所

    JS中对Cookie的操作详解

    path 可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径 domain 可选,该 cookie 有效的域名 secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 代码的封装 (function...

    Python使用cookielib模块操作cookie的实例教程

    cookielib是一个自动处理cookies的模块,如果我们在使用爬虫等技术的时候需要保存cookie,那么cookielib会让你事半功倍!他最常见的搭档模块就是python下的urllib和request。 核心类 1.Cookie 该类实现了Netscape ...

    jQuery cookie的公共方法封装和使用示例

    本文实例讲述了jQuery cookie的公共方法封装和使用。分享给大家供大家参考,具体如下: common.js放入公共方法: /** * 刷新cookie ... $.cookie(_key, _value, {path: cookiesPath, expires: cook

    关于jsp中cookie丢失问题(详解)

    cookie.setPath(/); response.addCookie(cookie); 以上这篇关于jsp中cookie丢失问题(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:jsp使用...

    javascript实现设置、获取和删除Cookie的方法

    本文实例讲述了javascript实现设置、获取和删除Cookie的方法。分享给大家供大家参考。具体实现方法如下: /* *设置Cookie * * name:cookie所对应的键 * value:cookie所对应的值 ... //cookie键值对 var str = nam

    jQuery操作cookie方法实例教程

     path:”/”,//cookie的路 径  domanin: //cookie的域名  secure:true //true,cookie的传输会要求一个安全协议,否则反之 }); 读取cookie 代码如下:$.cookie(“this-cookie”) 删除cookie 代码如下:$.co

    jquery 删除cookie失效的解决方法

    最后使用$.cookie(“name”,null,{path:”/”}); 终于成功了.  或许是$.cookie的一个bug吧, 不知最新版的有没有修复这个Bug. 以下是其他的一些$.cookie顺便转载过来以备用: 代码如下:$(function(){var COOKIE_NAME...

    jQuery使用cookie与json简单实现购物车功能

    本文实例讲述了jQuery使用cookie与json简单实现购物车的方法。分享给大家供大家参考,具体如下:...$.cookie("cart","ids",{expires:-7,path:"/"}) //存储cookie 保存7天 if($.cookie("cart")==undefined){//不存在用un

    php setcookie(name, value, expires, path, domain, secure) 参数详解

    setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie。和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这...函数定义:bool setcookie ( string name [, string value [, int expire [, string path

    Java 创建cookie和删除cookie

    //cookie时间 cooki.setPath(“/”); //根据个人的不用,在不同功能的路径下创建 response.addCookie(cooki); //清空Cookie操作 Cookie[] cookies=request.getCookies(); try { for(int i=0;i&lt;cookies.length;i++...

Global site tag (gtag.js) - Google Analytics