博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cookie 原理及作用
阅读量:6164 次
发布时间:2019-06-21

本文共 2474 字,大约阅读时间需要 8 分钟。

hot3.png

      Cookie的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问服务器中相同的应用时,会将之前的Cookie通过请求信息带到服务器端。

下面的Servlet展示了Cookie的功能。        public void doGet(HttpServletRequest request, HttpServletResponse response)                         throws ServletException, IOException {              response.setContentType("text/html");              PrintWriter out = response.getWriter();              String option = request.getParameter("option");              if ("show".equals(option)) {                  //获得请求信息中的Cookie数据                  Cookie[] cookies = request.getCookies();                  if (cookies != null) {                      //找出名称(键)为“cool”的Cookie                      for (int i = 0; i < cookies.length; i++) {                          if ("cool".equals(cookies[i].getName())) {                              out.println("

" + cookies[i].getName() + ":"                                  + cookies[i].getValue() + "

");                           }                      }                 }              } else if ("add".equals(option)) {                  //创建Cookie对象                  Cookie cookie = new Cookie("cool", "yeah!");                  //设置生命周期以秒为单位                  cookie.setMaxAge(20);                  //添加Cookie                  response.addCookie(cookie);             }         该Servlet对应的url-pattern为/testCookie  当浏览器请求地址“.../tst/testCookie?option=add”时,该Servlet创建一个Cookie对象,存储的键-值对为“cool”-“yeah”。通过response的addCookie方法将该Cookie信息添加到相应信息中。需要注意的是cookie的setMaxAge方法用于设置该cookie生命周期,单位是秒,如果过了这个期间,Cookie将失效。setMaxAge方法的参数如果为负值则表示该Cookie将在浏览器关闭时过期,如果参数为0则表示立刻删除该Cookie。访问该地址,对应的请求和响应的HTTP信息为:  请求:  GET /tst/testCookie?option=add HTTP/1.1  Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, **  Accept-Language: zh-cn  UA-CPU: x86  Accept-Encoding: gzip, deflate  User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)  Host: 192.168.5.100:8080  Connection: Keep-Alive  Cookie: cool=yeah!  响应:  HTTP/1.1 200 OK  Server: Apache-Coyote/1.1  Content-Type: text/html;charset=ISO-8859-1  Content-Length: 21  Date: Sun, 29 Jun 2008 06:15:26 GMT  

cool:yeah!

  注意,请求协议头中用于携带cookie信息的格式。

    

       Cookie可以用于保持用户的会话状态,但Cookie信息保存在客户端,存在较大的安全隐患,且一般浏览器对Cookie的数目及数据大小有严格的限制。在Web应用中,一般情况下通过HttpSession对象保持会话状态。  

      每个Cookie都可以设置一个最大生命周期,如果设置了该值,浏览器将会把该Cookie写到硬盘上。如果没有设置Cookie的最大生命周期,这样的Cookie称为会话Cookie,它存在内存中,当浏览器关闭时,该Cookie消失。

下一篇介绍(session实现机制) 

转载于:https://my.oschina.net/u/1453975/blog/508040

你可能感兴趣的文章
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
Java基础学习总结(4)——对象转型
查看>>
BZOJ3239Discrete Logging——BSGS
查看>>
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>
PowerDesigner中CDM和PDM如何定义外键关系
查看>>
跨域-学习笔记
查看>>