java cookie secure_COOKIE的SECURE属性

昨天跑了一下测试,发现服务器明明向客户端写了COOKIE,而且浏览器也木有禁用COOKIE,但是从浏览器再访问服务器,SessionID死活不会传到服务器。搞了一个上午,找不到原因,正在焦头烂额的时候,一个前辈帮了大忙。原来我的访问URL协议头是HTTP,而Weblogic里面的配置被人改动了。把cookie-secure的值改为了true,true意味着"指示浏览器仅通过 HTTPS 连接传回 cookie。这可以确保 cookie ID 是安全的,且仅用于使用 HTTPS 的网站。如果启用此功能,则 HTTP 上的会话 Cookie 将不再起作用。"唉,明白了,怪不得一直都取不到COOKIE。

好了,问题解决了,下面我自己再实验一下:

我自己的电脑用的Tomcat,首先,把cookie-secure的值设为false,创建一个session:

1 public voidservice(HttpServletRequest request, HttpServletResponse response) {2 //创建cookie

3 Cookie cookie = new Cookie("key", "value");4 //关键地方:cookie设为false

5 cookie.setSecure(false);6 response.addCookie(cookie);7 //从request中取得cookie,并输出

8 Cookie[] cookies =request.getCookies();9 for(Cookie c : cookies) {10 System.out.println(c.getValue());11 }12 RequestDispatcher dispatcher =request13 .getRequestDispatcher("index.jsp");14 try{15 dispatcher.forward(request, response);16 } catch(ServletException e) {17 e.printStackTrace();18 } catch(IOException e) {19 e.printStackTrace();20 }21 }

好,我们访问一下这个地址:http://localhost:8080/servlet/index.do

用Fiddler来看一下客户端发出的信息:

112ac3c2910b3e24ffa27883848a9c2b.png

好,我们再访问一下前面的地址:

85d553480d31484ddd94917e6ae94192.png

这个时候我们可以看到客户端发出的cookie里面,有key=value,说明客户端把cookie发给了服务器端。

那如果我们在服务器端设置cookie.setSecure(true)呢?

先上代码:

1 public voidservice(HttpServletRequest request, HttpServletResponse response) {2 //创建cookie

3 Cookie cookie = new Cookie("key", "value");4 //关键地方:cookie设为false

5 cookie.setSecure(true);6 response.addCookie(cookie);7 //从request中取得cookie,并输出

8 Cookie[] cookies =request.getCookies();9 if (cookies != null) {10 for(Cookie c : cookies) {11 System.out.println(c.getValue());12 }13 }14 RequestDispatcher dispatcher =request15 .getRequestDispatcher("index.jsp");16 try{17 dispatcher.forward(request, response);18 } catch(ServletException e) {19 e.printStackTrace();20 } catch(IOException e) {21 e.printStackTrace();22 }23 }

第一次访问:

443405a2d60b017bb42fa7297fb433b9.png这是request的信息。

服务器的返回信息如下:

35f5f85623156a874783cb9a758ce20d.png

我们可以看到服务器发给客户端的信息中有这么一行:Set-Cookie:key=value; Secure

多了一个Secure。

第二次访问:

34ff5399793ed8e8a66931ef0dd86d08.png

我们发现key=value这个cookie已经没有了。

那我们用https协议头来试着访问一下看看:

f2f004870d4a5167194f70a490fac893.png

我们看到key=value又发给了服务器端了。

唉,其实这些都是基础知识了,看来自己的只是还是很薄弱。继续努力吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值