zoukankan      html  css  js  c++  java
  • 详解会话技术cookie、session和token

    用户会话技术产生的原因

    我们都知道浏览器是没有状态的(HTTP 协议无状态),非持久连接。也就是说,你第二次通过某个浏览器访问WEB应用,他其实不知道你已经来过一次了。此时用户会话技术就油然而生。

    用户会话技术之cookie篇

    工作原理

    浏览器端第一次发送请求到服务器端,服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端,浏览器端再次访问服务器端时会携带服务器端创建的Cookie,服务器端通过Cookie中携带的数据区分不同的用户。

    常用场景

    比如,把用户登录的用户名和密码保存在cookie中, 紧接着用户就可以任意访问登陆后才能访问的页面,不需要用户每浏览一个页面都要去登陆了, 因为用户在发起请求的时候都带着cookie而cookie中有用户名和密码这就是登陆用户访问权限的原理。
    比如,我们在第一次登陆网站进行浏览后,关掉了浏览器,过了两天同同一个浏览器又打开这个网站,如果你发现还是登陆状态,那么说明这个网站设置了cookie的过期时间,而此刻还未过期,因为如果没有设置cookie的过去过期时间,关掉浏览器后再次访问还是需要登陆的。

    当你第一次访问某个网站的时候,服务器会给你颁发一个特定的cookie,之后你每次访问这个站点,你发送的请求头里都会带上相应的cookie,这样服务器便知道这俩请求是同一个客户发送的。看图就明白了

    第一次访问某个网站,服务器会给你个cookie,response headers里有一个set-cookie 字段,就是告诉浏览器,把这个cookie放到本地,以后访问我这个站点的时候,都把这个cookie带上,我就知道你是谁了。
    然后刷新页面,相当于第二次访问

    会发现,第二次访问的时候,response headers里边已经没有这个set cookie字段了,但是request headers 里多了一个cookie字段,而且仔细观察的话,你会发现这个值恰恰就是刚刚response headers set cookie字段的值。其实只要你不关闭浏览器,在打开一个窗口你会发现这个cookie值还是这个,默认情况下,关掉浏览器或者换一个浏览器,服务器就认为这是一个新的会话了。而cookie的保存时间是可以设定的,你会发现知乎,简书等网站,只要你登陆成功之后,即使关闭浏览器,过几天之后还是登陆状态,说明这个cookie是一个持久的cookie,保存时间比较长。
    从上述俩张图,可以发现cookie是实实在在存在于http请求和响应报头的。

    cookies 常用字段解释

    name:字段为一个cookie的名称。
    value:字段为一个cookie的值。
    domain:字段为可以访问此cookie的域名。
    path:为可以访问此cookie的页面路径。 比如domain是abc.com,path是/test,那么只有/test路径下的页面可以读取此cookie。
    expires/Max-Age :为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话默认值是Session,意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。
    Size: 此cookie大小。
    http: cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。

    secure: 设置是否只能通过https来传递此条cookie

  • 相关阅读:
    JSON
    Chromium 修改chrome.exe
    Chromium 修改任务管理器显示的Chromium
    winhttp get请求https
    string wstring 互转
    浏览器指纹在线监测获取网址
    咕了的构造题单总结
    Git 常用命令总结
    C# 网络地址是否有效
    IDEA如何从断点里获取对象所有数据
  • 原文地址:https://www.cnblogs.com/lpdeboke/p/14251131.html
Copyright © 2011-2022 走看看