zoukankan      html  css  js  c++  java
  • python爬虫之Cookie和Session

    什么是Cookie

      简单来说就是当用户通过http协议访问一个服务器的时候, 这个服务器会将一些Name/Value兼职对返回给客户端浏览器, 并将这些数据加上一些限制条件. 在条件符合时, 这个用户下次再访问服务器的时候, 数据又被完整的带给服务器.

      因为http是一种无状态协议, 用户首次访问web站点的时候, 服务器对用户一无所知. 而Cookie就像是服务器给每个来访问的用户贴的标签, 而这些标签就是对来访问的客户端的独有的身份的一个标识, 就想每个人的身份证一样, 带着你的个人信息. 而当一个客户端第一次连接过来的时候. 服务端就会给它打上一个标签, 就相当于给你发了一个身份证, 当你下载带着这个标签来的时候, 服务器就知道你是谁了. 所以Cookie是存在客户端的, 也就是存在浏览器中.

      Cookie中包含了一个由名字=值(name=value)形式构成的任意列表, 通过Set-Cookie或者Set-Cookie2 HTTP响应(扩展)收不将其贴到客户端身上.

    Cookie的分类 :

      会话Cookie: 不设置过期时间, 保存在浏览器的内存中, 关闭浏览器, Cookie便被销毁.

      普通Cookie: 设置了过期的时间, 保存在硬盘上.

    Cookie的属性 :

      最开始的cookie是网景公司定义的, 后来又有了RFC版本所以当前的Cookie有两个版本: Version 0和Version 1 它们有两种设置响应头的标识, 分别是: Set-Cookie和Set-Cookie2, 这也造成了一些属性的不同, 常用的版本为 Version 0.

      Version 0属性 :

        NAME=value: 键值对设置要保存的Name/Value, 这里的name不能和其他属性的名字相同

        Expirer: 过期时间

        Domain: 生成该Cookie的域名

        Path: 该Cookie是在当前的那个路径下生成

        Secure: 如果设置了这个属性, 那么只会在SSH连接是才会回传该Cookie

      Version 1属性 :

        Name=Value: 键值对设置要保存的name/value, 这里的name不能和其他属性的名字一样

        Comment: 主要用于说明该Cookie有什么用途

        CommentURL: 该服务器为此Cookie提供URL注释

        Discard: 是否在会话结束丢弃该Cookie, 默认为false

        Domain: 生成该Cookie的域名

        Max-Age: 最大的失效时间, 与Version 0不同的是这里设置的是在多少秒之后失效

        Path: 该Cookie是在当前的哪个路径下生成

        Port: 该Cookie在什么端口下可以回传服务器, 如果有多个端口, 以逗号隔开

        Secure: 如果设置了该属性, 那么只会在SSH连接时才会回传该Cookie


    关于Session

      Cookie可以让服务器跟踪每个客户端的访问, 但是每次客户端的访问都必须传回这些Cookie, 如果Cookie很多, 这就增加饿了客户端与服务器的数据传输量, 而Session的出现正式为了解决这个问题.

      同一个客户端每次和服务端交互时, 不需要每次都传回所有的Cookie值, 而是只要传回一个ID, 这个ID是客户端第一次访问服务器的时候生成的, 而且每个客户端是唯一的. 这样每个客户端就有了一个唯一的ID, 客户端只要传回这个ID就可以了, 这个ID通常是name为jsesionid的一个Cookie. 所以Session其实是利用Cookie进行信息处理的.

      1. cookie和session的共同之处在于: cookie和session都是用来跟踪浏览器用户身份的会话方式

      2. cookie和session的区别是: cookie数据保存在客户端, session数据保存在服务端

      3. cookie不是很安全, 别人可以分析存放存放在本地的cookie并进行cookie欺骗, 如果主要考虑到安全应该使用session, 当然也没有绝对的安全, 只是相对于cookie, session更安全

      4. session会在一定时间内保存在服务器上. 当访问增多, 会比较占用你服务器的性能, 如果主要考虑到减轻服务器性能, 应该使用Cookie

      5. cookie和session 各有优缺点, 所以讲登录信息等重要信息存放为session; 其他信息如果需要保留, 可以放在cookie中.

  • 相关阅读:
    使用Kafka Connect导入/导出数据
    FastDFS :java.lang.Exception: getStoreStorage fail, errno code: 28
    Zookeeper+Kafka集群测试
    zookeeper,kafka错误
    kafka systemctl开机启动
    zookeeper systemctl开机启动
    kafka 集群安装
    kafka升级官方指导及注意事项
    centos7.7 添加nginx服务
    教你如何迅速秒杀掉:99%的海量数据处理面试题
  • 原文地址:https://www.cnblogs.com/dong-/p/10314925.html
Copyright © 2011-2022 走看看