zoukankan      html  css  js  c++  java
  • HTTP协议COOKIE和SESSION有什么区别

    1、为什么会有COOKIE这种机制

      首先一种场景, 在一个网站上面, 我发起一次请求,那服务器怎么知道我是谁?是谁发起的这次请求呢,  HTTP协议是无状态的协议, 浏览器的每一次请求,服务器都当做一次新请求, 但是在实际应用中我们需要知道这个请求来自于谁,需要查找哪些信息返回给访问者,

    这个时候就引入了COOKIE机制, COOKIE机制是什么呢? 其实就是服务器给客户端返回数据的时候,中间加了一个标识, 然后客户端再次请求数据的时候,数据中带上这个标识, 那么服务器接收到请求消息时就知道这个请求来自于谁了(相当于服务器接收到请求时,如果没有带识别码,生成一个识别码给客户端, 如果有识别码,就把这个识别码需要的对应内容返回给客户端)

    cookie保存在客户端,比较不安全;session保存在服务器端,比较安全。

    cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码,session用来跟踪会话。

    建议用户名,密码保存在session,其它信息可保存在cookie。

    先来了解一下各自的工作机制

    1. cookie的工作机制

    1、服务器向客户端响应请求的时候,会在响应头中设置set-cookie的值,其值的格式通常是name = value的格式

    2、浏览器将 cookie 保存下来

    3、每次请求浏览器都会自动将 cookie 发向服务器

    4、cookie最初是在客户端用于存储会话信息的。

     
     

    2. session的工作机制?

    1、当客户端第一次请求session对象时,服务器会创建一个session,并通过特殊算法算出一个session的ID,用来标识该session对象,然后将这个session序列放置到set-cookie中发送给浏览器

    2、浏览器下次发请求的时候,这个sessionID会被放置在请求头中,和cookie一起发送回来

    3、服务器再通过内存中保存的sessionID跟cookie中保存的sessionID进行比较,并根据ID在内存中找到之前创建的session对象,提供给请求使用,也就是服务器会通过session保存一个状态记录,浏览器会通过cookie保存状态记录,服务器通过两者的对比实现跟踪状态,这样的做,也极大的避免了cookie被篡改而带来的安全性问题

    4、由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面

     
     

    总之,cookie、session都会保存在浏览器,都会向服务器请求,只是实现的工作机制不同,使用的场景不同。



  • 相关阅读:
    Java 正则表达式
    Java 设计模式系列(二三)访问者模式(Vistor)
    Java 设计模式系列(十五)观察者模式(Observer)
    Java 设计模式系列(十八)备忘录模式(Memento)
    Java 设计模式系列(二十)状态模式
    Java 设计模式系列(十五)迭代器模式(Iterator)
    Java 设计模式系列(十三)模板方法
    Java 设计模式系列(十二)策略模式(Strategy)
    Java 设计模式系列(二二)责任链模式
    Java 设计模式系列(十四)命令模式(Command)
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/9801023.html
Copyright © 2011-2022 走看看