域名,COOKIE是什么?有什么用处?COOKIE 和SESSION的区别?COOKIE的有效期?

1. 背景介绍

核心概念

  • 域名
  • 会话跟踪技术
    • cookie
    • session

2. 知识剖析

什么是域名?

网域名称系统(DNS,Domain Name System,有时也简称为域名)是因特网的一项核心服务, 它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网, 而不用去记住能够被机器直接读取的IP地址数串。 IP地址是Internet主机的作为路由寻址用的数字体标识,人不容易记忆。因而产生了域名这一种字符型标识

什么是会话跟踪技术?

会话及会话跟踪的定义

我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤, 在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端, 而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了, 到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。 在一个会话的多个请求中共享数据,这就是会话跟踪技术。

会话跟踪的作用是什么?

浏览器与服务器之间的通信是通过HTTP协议进行通信的,而HTTP协议是”无状态”的协议,它不能保存客户的信息, 即一次响应完成之后连接就断开了,下一次的请求需要重新连接,这样就需要判断是否是同一个用户, 所以才有会话跟踪技术来实现这种要求

如何实现会话跟踪技术?

  • cookie
    Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。 对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。 服务器创建保存于浏览器端,不可跨域名性,大小及数量有限。客户端可以采用两种方式来保存这个Cookie对象, 一种方式是 保存在 客户端内存中,称为临时Cookie,浏览器关闭后 这个Cookie对象将消失。 另外一种方式是保存在 客户机的磁盘上,称为永久Cookie。以后客户端只要访问该网站, 就会将这个Cookie再次发送到服务器上,前提是 这个Cookie在有效期内。 这样就实现了对客户的跟踪。 Cookie是可以被禁止的。
     
  • SESSION
    每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的, 在session中可以存放信息。 保存在服务器端。需要解决多台服务器间共享问题。 如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。 在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象, 然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户。 Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效。

3. 常见问题

问题1:Session和Cookie区别是什么?

4. 解决方案

SESSION和COOKIE区别

  • cookie数据存放在客户的浏览器上,session数据放在服务器上。
  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5. 编码实战

6. 扩展思考

什么是COOKIE的生命?

Cookie不只是有name和value,Cookie还是生命。所谓生命就是Cookie在客户端的有效时间, 可以通过setMaxAge(int)来设置Cookie的有效时间。

如何设置COOKIE的有效时间?

  • cookie.setMaxAge(-1):cookie的maxAge属性的默认值就是-1,表示只在浏览器内存中存活。一旦关闭浏览器窗口,那么cookie就会消失。
  • cookie.setMaxAge(60*60):表示cookie对象可存活1小时。当生命大于0时,浏览器会把Cookie保存到硬盘上,就算关闭浏览器,就算重启客户端电脑,cookie也会存活1小时;
  • cookie.setMaxAge(0):cookie生命等于0是一个特殊的值,它表示cookie被作废!也就是说,如果原来浏览器已经保存了这个Cookie,那么可以通过Cookie的setMaxAge(0)来删除这个Cookie。无论是在浏览器内存中,还是在客户端硬盘上都会删除这个Cookie

7. 参考文献

参考一:会话跟踪技术的四种实现方法及特点整理

参考二:会话跟踪技术:HttpSession和Cookie

8. 更多讨论

  1. 问题一 :什么是Cookie的路径?
    现在有WEB应用A,向客户端发送了10个Cookie,这就说明客户端无论访问应用A的哪个Servlet都会把这10个Cookie包含在请求中!但是也许只有AServlet需要读取请求中的Cookie,而其他Servlet根本就不会获取请求中的Cookie。这说明客户端浏览器有时发送这些Cookie是多余的!
     
  2. 问题二 : Cookie中保存中文?
    Cookie的name和value都不能使用中文,如果希望在Cookie中使用中文,那么需要先对中文进行URL编码,然后把编码后的字符串放到Cookie中。
  3. 问题三 : session和cookie的应用场景有哪些?
  • session :登录验证信息
  • cookie :判断用户是否登录过网站,用来记录购物车或者记录用户使用偏好来制定推送

猜你喜欢

转载自blog.csdn.net/qq_42247970/article/details/81165959