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

    Cookie与Session

    --
    在看源码的过程中,发现自己对cookie和session不甚了解。于是便在网上好好看了看这方面的资料。现在记录下来,留作备份。以后忘了还能看...
    会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie和Session。Cookie通过在客户端记录信息,确定用户身份;Session在服务器端记录信息,确定用户身份

    http协议是无状态协议,这也就说明了,每个用户在给网站的服务器发送请求后,会建立连接,然后服务器返回信息,然后这个连接就中断了。当用户继续向服务器发送请求的时候,会再次建立连接,这时候服务器不会知道这个用户的信息,这样就会造成不必要的麻烦(比如用户登录之后的操作,比如购物网站的购物车).为了处理这个问题,就发明了cookie.
    Cookie是一小段文本信息。当用户第一次请求服务器,并且服务器需要记录用户的状态,服务器就会在response中发送一个set_cookie,客户端接收到了之后,会保存这个cookie。当客户端再次请求服务器端的时候,会连同这个cookie一起发送给服务器端。服务器接收到request之后,会检查cookie,以此来判断用户的状态。同时,服务器端也能修改用户的cookie(再次发送set_cookie,使得客户端覆盖原cookie)
    这就好比 一个人(如明明)放学后想回家,但是打不开门,就只好敲门,等妈妈来开门。时间久了,妈妈觉得老给他开门太麻烦,就给了他一把钥匙。这样当他每天放学想回家的时候,只需要拿出钥匙把门打开就可以了。这里面,明明就是客户端,钥匙就是cookie,家就是服务器。

    Cookie的属性

    cookie主要有以下属性:

    • name (名称)
    • value (这个name对应的值)
    • expires (这个cookie失效的时间)
    • domain (可以访问这个cookie的域名)
    • path (这个cookie使用的路径,如果设置为/aaa,则只有域名后为/aaa才能访问,如果为/,则表示本域名都能访问)

    Session

    Session是服务器端使用的一种记录客户端状态的机制,由于存储在服务器上,响应的增加了服务器的存储压力
    客户端访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session。当客户端再次访问这个服务器的时候,服务器只需要查找到这个session,然后从这个session中查找该客户的状态就可以了
    Session保存在服务器端,为了保证访问速度,经常存储在内存中。Session在用户第一次访问服务器的时候自动创建。Session创建后,只要用户继续访问,这个session的最后访问时间就会被更新。随着用户访问的增加,Session的数量也会增加,服务器就会把长时间没活跃的session从内存删除
    session需要使用Cookie作为识别标志。因为http协议是无状态的,session无法通过http连接来判断是否是同一个用户。所以服务器会向客户端发送一个SESSIONID的Cookie,这个的值为该session的id,以后客户端访问服务器的时候,会把这个cookie发送给服务器,服务器根据sessionid来查询对应的session。这个cookie是服务器自动生成的,只在当前浏览器内有效,且关闭浏览器就会失效
    这就好比 另一个人(小杨)去会员制的酒店吃饭,只有会员才能进去,但是酒店会员太多,无法分辨哪些是会员哪些不是,于是酒店就建立了一个列表,列表里面记载了会员的相关信息和编号,当他人想进入这个酒店的时候,只需要告诉酒店他的编号,酒店核实后再确定能不能让他进入。这里面,小杨就是客户端,酒店就是服务器,列表就是存储了很多session的数据,编号就是SessionID

  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/eric-nirnava/p/cands.html
Copyright © 2011-2022 走看看