zoukankan      html  css  js  c++  java
  • Web基础——cookie和session的生存之道

    cookie和session用于实现会话跟踪

    http协议是无状态的,即服务器无法知道当前会话是否之前访问过服务器。但是我们开发网站的时候,希望提供个性化的服务,即针对不同的用户(浏览器)提供不同的数据和服务,单纯的http协议显然是无法实现这一点的,那么我们就需要使用到会话跟踪的技术。

    会话跟踪技术的实现有两种方式,一种就是通过session和cookie,另一种是url重写技术(就是在url中加入jsessionid来跟踪session)

    Session

    Session中保存了每个会话的信息,比如登录状态、账号、购物车啥的。但是单纯的session是无法达到个性化服务的:因为http协议的无状态性,当用户访问服务器进行了操作后(比如登录),下一次再访问时客户端无法再跟踪到之前的会话信息。

    那么cookie的作用就体现出来了:

    Cookie

    接着前面的问题,每一次的会话会产生一个session,每个session有一个独一的sessionid,那么我们可以通过保存这个sessionid,在下一次访问的时候,我们就使用这个sessionid来找到之前的会话,那么不就是可以实现会话跟踪了吗。Cookie的作用就是这样,当用户第一次访问服务器时,服务器会在响应报文中添加一个set-cookie字段将当前会话的sessionid传给客户端(set-cookie:jsessionid:…),客户端(浏览器)接收到response后,将cookie键值对(“jsession”,value)存入内存中,下一次再访问该服务器时,即传入对应的cookie内容,那么服务器就可以根据sessionid找到之前的session啦,这样即完成了会话的跟踪。

     

    Cookie中几个比较重要的参数

    key,              键

    value='',         值

    max_age=None,     超时时间 秒   值若为-1:浏览器关闭时cookie即失效0:不会保存cookie    值若大于浏览器被关闭的时间  则cookie会被存入文件中   下次访问对应服务器时即加入浏览器内存使用

    expires=None,     超时时间时间戳,到expires设置的时间时失效

    path='/',         Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问

    domain=None,      Cookie生效的域名

    secure=False,     https传输

    httponly=False    只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

    session和cookie的区别

    保存位置:session保存于服务器端,cookie保存于客户端内存或文件中。

    内存cookie和持久cookie

    如果设置了有意义的cookie过期时间,那么cookie会被保存到硬盘(win7ie--C:UsersAdministratorAppDataRoamingMicrosoftWindowsCookies ,chrome: C:UsersAdministratorAppDataLocalGoogleChromeUser DataDefaultCache),

    否则,cookie保存在内存。

  • 相关阅读:
    高阶LOOP
    C 语言常用方法技巧
    Linux内存压力测试memtester工具
    Matrix computations in C
    代码整洁之道语句摘录
    Ubuntu Mysql 常用指令
    linux 汇编 函数调用
    技术有待改进,知识需要更新
    原来那些网络协议都是这么回事啊!!!
    谢谢老乡们的关注……
  • 原文地址:https://www.cnblogs.com/zhihow/p/9815821.html
Copyright © 2011-2022 走看看