因为HTTP协议是无状态的,但是很多网站的功能需要先登录才能使用。这就引入了cookie。

Cookie机制

服务器用HTTP头向客户端发送cookies。客户端(浏览器)解析cookies并将它们保存为一个本地文件。浏览器会自动将发往该服务器的请求上添加这些cookies。

Cookie机制采用的是客户端保持状态的方案。它是在用户端存储会话状态的机制。需要浏览器支持。正统的cookie发布是通过拓展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的提示,让浏览器生成相应的cookie。

Cookie的内容主要包括:名字,值,过期时间,路径和域。路径和域一起构成cookie的作用范围。

如果请求资源所在位置在cookie的作用范围内,会把该cookief附在请求资源的HTTP请求头上发送给服务器。

会话cookie:如果不设置过期时间则表示这个cookie的生命周期就是浏览器会话期间。关闭浏览器,cookie就会消失。

持久cookie:如果设置了过期时间,浏览器会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的时间。

为cookie服务的首部字段

首部字段名 说明 首部类型
Set-Cookie 告知客户端,服务器给设置的cookie 响应首部字段
Cookie

告诉服务器端,客户端的cookie

请求首部字段

Set-Cookie

当服务器准备开始管理客户端状态时,会事先告知各种信息。

属性 说明
NAME=VALUE 赋予Cookie的名称和值(必需项)
expires=DATE

Cookie的有效期

path=PATH 将服务器上的文件目录作为Cookie的适用对象
domain=域名 作用Cookie适用对象的域名
Secure 仅在HTTPS安全通信时才会发送Cookie
HttpOnly 使Cookie不能被JavaScript脚本访问

Seesion机制

session机制是一种服务器端保持会话的机制,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以seesion机制会借用cookie机制来达到保存标识的目的。

当需要为客户端的请求创建一个session时,服务器端会检查请求中是否包含session标识(session id),如果有表示已经创建过session了,直接把这个session拿来用(找不到会新建一个),如果客户端请求中不包含session id。则为此客户端创建一个session及对应的session id 。id会跟着本次响应返回给客户端保存。

保存session id方式一般采用cookie。但是cookie是可以人为禁止的。所以必须有其他机制可以在cookie被禁止时能够把session id传送给服务器端。经常会使用的是URL重写,把session id放在url路径后面。

cookie和session的不同

1)存取方式的不同

cookie只能保存ASCII的字符串,若需要存取其他字符型或二进制数据,需要进行编码

session能存取任何类型的数据

2)隐私安全的不同

cookie存储在客户端浏览器中,客户端的某些程序可能会复制或修改Cookie中的内容

session存储在服务器上,对隐私信息能够有效的保护

3)服务器压力不同

cookie存储在浏览器中,所以对服务器没有压力

session存储在服务器中,当在线用户多时,会对服务器产生压力

4)有效期的不同

cookie可以设置过期时间,来实现免登陆功能

session依赖名为jsessionid的cookie,但该cookie的过期时间默认为-1。关闭了浏览器session就会失效

5)客户端支持的不同

cookie需要浏览器的支持,如果浏览器禁用cookie或不支持,就不能用cookie跟踪会话了,而session可以通过URL地址重写来跟踪会话。

6)跨域支持的不同

cookie支持跨域名访问,例如将domain设置为“.baidu.com”则以“.baidu.com”为后缀的一切域名都可以使用该cookie访问(常用)

session不支持跨域访问

HTTP协议11-cookie和seesion的更多相关文章

  1. HTTP协议 (七) Cookie

    HTTP协议 (七) Cookie Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的[细说Cookie], 让我学到了很多东西.Fish的这篇文章写得太经典了. 所以我这篇 ...

  2. 不惧面试:HTTP协议(3) - Cookie

    v博客前言 先交代下背景,写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网络这一块的知识点,先是搞懂HTTP协议,然后是TCP/IP协议,再就是WCF如何运用 ...

  3. HTTP协议 (七) Cookie(转)

    add by zhj: 客户端通过request header:cookie将cookie发给服务端,而服务端通过response header: set-cookie将cookie传回客户端 一条c ...

  4. 转:Http协议中Cookie详细介绍

    Http协议中Cookie详细介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了, ...

  5. http协议之cookie标准RFC6265介绍

      [Docs] [txt|pdf] [draft-ietf-httpst...] [Diff1] [Diff2] [Errata] PROPOSED STANDARD Errata Exist In ...

  6. Django Cookie和Seesion

    1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生.cookie的工作原理是:由服务器产生内容,浏览器 ...

  7. Cookie与Seesion的作用

    1.什么是Cookie与Session? cookie:首次访问服务器,服务器返回cookie置浏览器,存到用户电脑.之后去访问同一服务器,浏览器会携带相应cookie判断是否是同一浏览器的访问,告知 ...

  8. ie 11 cookie 的值为空

    昨天碰到ie 11上运行的程序时  登录老是登录不上去 一直是登录界面 最后检查半天发现时因为 权限验证登录时 获取cookie里的用户信息时 一直为空 便在网上查询资料  发现是因为ie11 里貌似 ...

  9. http无状态协议,cookie和session详解(一)

    1.HTTP无状态协议 首先看百度百科给出的定义: HTTP无状态协议,是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传, 这样导致可能每次连接传送的数据量增大 ...

  10. Cookie和Seesion

    会话跟踪技术 1 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10 ...

随机推荐

  1. 8个Python高效数据分析的技巧

    一行代码定义List 下面是使用For循环创建列表和用一行代码创建列表的对比. x = [1,2,3,4] out = [] for item in x: out.append(item**2) pr ...

  2. C#中指针使用总结(转载)

    C#为了类型安全,默认并不支持指针.但是也并不是说C#不支持指针,我们可以使用unsafe关键词,开启不安全代码(unsafe code)开发模式.在不安全模式下,我们可以直接操作内存,这样就可以使用 ...

  3. Python学习总结 11 使用tempest测试OpenStack

    1, 什么是Tempest tempest ├── api # API的测试集 ├── cli # OpenStack的命令行工具测试集 ├── common # 一些公共的工具类和函数 ├── sc ...

  4. 微信小程序:动画(Animation)

    简单总结一下微信动画的实现及执行步骤. 一.实现方式 官方文档是这样说的:①创建一个动画实例 animation.②调用实例的方法来描述动画.③最后通过动画实例的 export 方法导出动画数据传递给 ...

  5. 论PHP框架设计模式及MVC的缺陷

    目前主流的PHP框架设计模式均为MVC模式,比如yii或codeigniter,均是由控制器接收页面请求,并沟通模型与视图的交互.如果我们把网站整体看作一个矩阵,把网站接收用户请求并处理看作是网站的竖 ...

  6. Django rest framework 源码分析 (1)----认证

    一.基础 django 2.0官方文档 https://docs.djangoproject.com/en/2.0/ 安装 pip3 install djangorestframework 假如我们想 ...

  7. 关于token登录逻辑分析

    前言: token登录上一家公司也写过,迷迷糊糊的, 现在做一个APP,需求为每次调用接口都会传token,登录注册等特殊的除外, 逻辑整理一下还是比较简单的 主要的问题还是,如何在框架中找到较好的插 ...

  8. 第七章· Redis Cluster 核心技术

    Redis Cluster 分布式集群 Redis Cluster 安装部署 Redis Cluster 集群管理操作(核心)

  9. CDH Yarn 调度资源指南 - CDH6.0.x 详解

    Yarn 工作架构 最近随着集群大家开始频繁使用集群,资源调度的问题越发的凸显出来.需要更加深入的了解 yarn 资源调度的原理,以及到底在背后做了一些什么事情. 来看一下下面这张图. yarn 里面 ...

  10. springboot 静态注入 单例

    package com.b2q.web_push.util; import io.goeasy.GoEasy; import org.springframework.beans.factory.ann ...