zoukankan      html  css  js  c++  java
  • Session和Cookie

    Session和Cookie

    • Session

    session是一种记录用户状态的机制,不同的是cookie保存在客户端,而session保存在服务端。客户端浏览器发起请求后,服务端会把客户端的信息以某种形式进行记录在服务器上。这就是session。session通过sessionID来识别用户的唯一性,通过cookie将sessionID带到服务器上进行校验。

    • Session创建过程

    当程序需要为某个客户端的请求创建sessionID时,服务器首先检查这个客户端的请求中是否含有sessionID,如果已经包含则说明此客户端之前创建过session,服务器就按照sessionID把这个session检索出来使用(检索不到会重新创建),如果客户单请求不包含sessionID,则服务器就会为客户端重新创建一个与此次session(会话)相关联的sessionID,然后在本次响应中返回给客户端保存。(sessionID的值是一个既不会重复,又不容易找到规律模仿仿造的字符串。)

    • Cookie

    cookie由于http是一种无状态协议,服务器从网络连接上无法知道用户身份,当在页面进行一系列的操作后,服务器无法判断是用户A还是用户B的操作,所以这时就引入了cookie作为类似一个“通行证”的东西,来识别是用户A的操作还是用户B的操作,这就是cookie的工作原理。

    • Cookie创建过程

    当客户端请求服务器,如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie。客户端会将cookie保存起来,当浏览器再次请求该网站时,浏览器把请求的网址以及cookie一起交给服务器,服务器核查cookie,以此来辨别用户的状态。服务器还可以根据需求对cookie进行修改。cookie实际上是一小段文本信息,主要内容包括名字,值,过期时间,路径,域。

    • 个人总结

      我个人认为,可以说cookie是客户端用户的身份验证的身份证,而sessionID则是标识用户的唯一性的身份证号,而session则是服务端用来验证用户sessionID(身份证号码)的验证器。

      • 区别
        • cookie的数据保存在客户端的浏览器上
        • session的数据保存在服务器上
        • cookie不是很安全,其他人可进行分析仿造本地的cookie进行cookie欺骗
        • session会在一定时间内保存在服务器上,当访问增多,会增加服务器的压力。
        • 单个cookie中保存的数据不能超过4k,很多浏览器都限制一个站点最多保留20个cookie
        • 出于安全考虑,可以将登陆信息等重要信息保存在session中,其他信息需要保留可以存在到cookie中。
    狭路相逢勇者胜!
  • 相关阅读:
    操作系统基础知识与常见问题记录
    String
    Function
    HelloWorld
    替换空格
    二维数组中的查找
    建造者模式(Builder Pattern)
    单例模式(Singleton Pattern)
    工厂方法(Factory Pattern)
    设计模式概述
  • 原文地址:https://www.cnblogs.com/amcoder/p/13920287.html
Copyright © 2011-2022 走看看