zoukankan      html  css  js  c++  java
  • HTTP中的Session和Cookie浅析

    Cookie:(小饼干)

    一小段文本信息,伴随着用户请求和页面在Web服务和浏览器之间传递,Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。(保存在客户端) 如图所示:

    Cookie的来由:
    由于Http是无状态的请求协议,无法识别请求来自哪一个用户,进而无法跟踪用户的会话,而Cookie这一会话技术的出现,则可用来标识用户请求,弥补HTTP协议无状态的不足。

    Cookie的产生:

    Cookie真正产生于服务器端。并将在服务器端产生的cookie放置在响应头中的set-Cookie中,以后用户的每次请求都会带上该Cookie(1.在检查域名domain和Path匹配的情况下 2.在Cookie未过期时)。

    Cookie的使用说明:

    Cookie对象使用key-value属性对的形式保存用户状态,一个Cookie对象保存一个属性对,一个request或者response同时使用多个Cookie。

    Cookie的分类:

    会话Cookie:临时Cookie,关闭浏览器即被删除。(保存在浏览器内存中)

    持久Cookie:存储在硬盘中,关闭浏览器,重启电脑都不会删除该Cookie,直到Cookie的过期时间到了,才会被删除。

    Cookie与Session的关联:

    cookie中保存了某一用户的Session的jsessionid,通过该jsessionid的值,即可找到该用户在服务器端的session。

    Cookie的作用:

    1.用户会话状态管理(用户登录状态,购物车)。

    2.个性化设置。

    3.浏览器行为跟踪。

    Cookie的缺陷:

    1.Cookie的存储会限制大小

    2.Cookie在浏览器中被看到,有的浏览器甚至可以修改,安全性较低,不能用来存储敏感数据或隐私数据。

    Cookie的常见重要属性:(在Cookies下面可存放多个Cookie)

    Name:一个Cookie的名称。

    Value:一个Cookie的值。

    domain:表示Cookie所在的域。

    Path:表示Cookie所在的目录。

    Size:Cookie的大小。

    httponly: cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。

    secure 字段 设置是否只能通过https来传递此条cookie。(如为true,浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie)。

    expires/Max-Age:字段为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话,默认浏览器关闭,该Cookie失效。 

    SameSite: Cookie允许服务器指定在跨站请求时该Cookie是否会被发送,从而可以阻止跨站请求伪造攻击(CSRF)。

    Session:

    服务器端使用的一种记录客户端状态的机制。(不同于Cookie,Session保存在服务器端)

    session的产生:

    当用户第一次请求session对象时,服务器会产生一个session,并产生一个session的id,用来标识该session,然后将session的id放在set-cookie中发送给浏览器。当用户下次请求时,会将携带该id的cookie发送回来。服务器会将内存中保留的session的id与cookie中的id进行比较,并找到之前存储的session对象。

    session的实现方式:

    1.依赖于Cookie(即上述方式)

    2.URL重写。在URL的后缀中以 jsessionid=xxxx的方式将jsessionid传递给客户端。

    3.隐藏的表单域。在Form表单中,设置一个隐藏域,将jsessionid放置其中,并传给服务器端。

    session的生命周期:

    session默认的生命周期是20分钟,可以通过属性设置为更长或更短。

    sesison中的属性(持续补充中):

    Timeout:设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟。

     session的作用:
    1.判断用户有无登录

    2.购物车功能

  • 相关阅读:
    js学习笔记之标准库
    js学习笔记
    html5学习
    C#调用win32 api程序实例
    javascript计算字符串中出现最多的字符和个数
    javascript中的promise和deferred:实践(二)
    jquery animate 详解
    jquery animate stop函数解析
    javascript继承的写法
    css3 改变滚动条样式
  • 原文地址:https://www.cnblogs.com/Pzhenzhen/p/8521686.html
Copyright © 2011-2022 走看看