`
cuishen
  • 浏览: 296846 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Response Header Set-Cookie difference in cross browser

    博客分类:
  • j2ee
阅读更多
如果你项目中需要在server端把cookie写回client端,例如在JSP中写下面的代码:
<%
Cookie cookie = new Cookie("testCookie", "testValue");
cookie.setMaxAge(60);
cookie.setPath("/");
response.addCookie(cookie);
%>

会有下面的信息在response header里面:
Set-Cookie	testCookie=testValue; Expires=Wed, 02-Jul-2014 13:01:13 GMT; Path=/


注意,IE下面 和 Chrome / Firefox下面对于“Set-Cookie”的处理是完全不同的,IE是base on client端的时间去计算cookie expire time;
Chrome / Firefox 是base on server端的时间去计算cookie expire time!

So,对于cookie expire过期时间要求很高的场景要特别当心了!

以上面的代码为例:原意是要求cookie在60秒后过期,如果client端比她的local timezone的标准时间快more than 60秒,例如标准时间是10:00:00pm,但是client的system time是10:01:01pm;而server端是她的local timezone的标准时间,那么不管怎么地这个cookie在IE下都是立马过期的!!


--- add some finding:

response header 里的Expires 是指绝对过期时间(server时间),IE是拿这个绝对过期时间和client端的时间比;而正好相反:firefox和Chrome是拿她跟server端的时间比,So 造成了这种behavior上的差异!!

可以在response header里面设置相对过期时间:“Max-Age”,能很好的解决这个问题:

如下代码:
response.addHeader("Set-Cookie", "testCookie2=test2; Max-Age=60; Path=/");

response header 如下:
Set-Cookie	testCookie2=test2; Max-Age=60; Path=/

因为她是相对时间,所以NO matter你的client端的时间是神马,都能确保在Max-Age时间里面能得到cookie!在IE/Firefox/Chrome下测试通过!


0
0
分享到:
评论
1 楼 cuishen 2014-07-11  
注意: 网上有人说IE8以下不支持Max-Age, 上面的代码是在IE v11测试通过的!

相关推荐

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    文件下载response.setHeader()下载中文文件名乱码问题解决办法 本文主要讨论了文件下载时response.setHeader()下载中文文件名乱码问题的解决办法。该问题是由于 HTTP 消息头中的 Content-Disposition 头字段不正确...

    Cookie的使用

    在Cookie介绍中 我们了解到Cookie是基于Set Cookie响应头和Cookie请求头工作的 服务器通过response对象的addHeader 方法将cookie发送给浏览器 然后浏览器通过Cookie请求头将cookie再送回服务器

    response.setHeader问题

    response.setHeader 问题详解 Response.setHeader 问题是指在 Servlet 中使用 response 对象的 setHeader 方法来设置 HTTP 消息报头,以控制浏览器的缓存行为。本文将详细解释 response.setHeader 的作用、HTTP ...

    flask-session-cookie-manager

    标题“flask-session-cookie-manager”指的是一个Python应用,它专门针对Flask框架,用于管理和操作session cookie。在Web开发中,session cookie是服务器用来跟踪用户状态的一种方式,特别是在无状态的HTTP协议上...

    ( response.setHeader()下载中文文件名乱码

    ( response.setHeader()下载中文文件名乱码问题

    为何要小心Nginx的add_header指令详解

    大家都知道,nginx配置文件通过使用add_header指令来设置response header。 昨天无聊用curl查看一个站点的信息,发现返回的头部与想象中的不一样: HTTP/2 200 date: Thu, 07 Feb 2019 04:26:38 GMT content-type: ...

    Delphi使用IdHTTP控件操作Cookies的例子.rar

    在处理完请求后,IdHTTP的`Response`属性包含服务器返回的信息,其中`Response.Headers['Set-Cookie']`可能会包含新的或更新的Cookie。我们可以检查这个头部,将新Cookie添加到`CookieManager`,或者根据需要进行...

    PyPI 官网下载 | browser-cookie3-0.8.0.tar.gz

    浏览器cookie3(browser-cookie3)是一个Python库,用于在命令行中提取和使用Web浏览器的cookies。这个库特别适用于开发者,尤其是那些需要在自动化脚本或无头环境中模拟已登录状态的情况。它支持多种浏览器,如Fire...

    cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击.zip_js设置cookie值

    response.setHeader("Set-Cookie", "username=JohnDoe; Path=/; HttpOnly"); ``` 或者,如果你使用的是Spring框架,可以在Cookie对象上设置HttpOnly属性: ```java Cookie cookie = new Cookie("username", "John...

    response.setHeader参数、用法的介绍

    response.setHeader 是用来设置返回页面的头 meta 信息, 使用时 response.setHeader( name, contect );

    node.js中的http.response.setHeader方法使用说明

    方法说明: 设置头文件信息。 如果将要发送的信息已包含头文件,执行该方法后头文件的值将被改写。 如果一个头文件需要传递多个值,可以使用数组。...response.setHeader(“Set-Cookie”, [“type=ninja”, “l

    cookie设置httpOnly和secure属性实现及问题

    response.setHeader("Set-Cookie", "JSESSIONID=" + sessionID + "; Path=/yourPath; Secure; HttpOnly"); ``` - **问题2**: 修改程序中不兼容的代码 - **现象1**: 设置`HttpOnly`属性后,程序无法获取客户端...

    response.setHeader各种用法详解

    "Response.setHeader各种用法详解" Response.setHeader是Servlet编程中一个非常重要的方法,通过它可以设置HTTP响应报文的头信息,从而控制浏览器的行为。本文将对Response.setHeader的各种用法进行详细的介绍。 ...

    Webbrowser调用dll,简单方便获取request response header等资源的例子,实现了HttpWebResquest等实现的功能

    老外写的Webbrowser调用dll,简单方便获取request header,response header等各种网络资源的例子,实现了原来只有WebClient,WebRequest和HttpWebResquest才能实现的功能。 需要dll的完整源代码见我上传的另外一个资源...

    Jsp利用response.sendRedirect、cookie传参

    ### JSP中利用`response.sendRedirect`与Cookie进行参数传递 #### 概述 在Web开发中,特别是使用Java Server Pages(JSP)进行网站构建时,数据的传递是至关重要的。其中,`response.sendRedirect`方法和Cookie...

    header中Content-Disposition的作用与使用方法

    response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0); 在某些情况下,这会使得在一些浏览器(如IE)上无法弹出下载对话框,导致下载功能失效。这是因为在禁止缓存的条件下,...

    Laravel开发-cookie

    return response()-&gt;view('welcome')-&gt;withCookie(Cookie::make('key', 'value', $minutes)); ``` - **获取Cookie**:在控制器或视图中,可以使用`request-&gt;cookie`来获取Cookie值: ```php $cookieValue = ...

    解决方案 ‘Access-Control-Allow-Origin’ header in the response must not be the wildcard ‘*’

    标题 "解决方案 ‘Access-Control-Allow-Origin’ header in the response must not be the wildcard ‘*’" 提到的是一个在Web开发中常见的跨域问题。`Access-Control-Allow-Origin` 是一个用于控制资源跨域访问的...

    Response-Headers详解

    ### Response-Headers详解 #### HTTP响应报头的基本概念与作用 HTTP响应报头是Web服务器向客户端(通常是浏览器)发送响应时附带的信息。这些报头提供了关于响应本身的元数据,如响应的内容类型、长度等,对于正确...

Global site tag (gtag.js) - Google Analytics