• 网络请求中的cookie与set-Cookie的交互模式的一些问题解析


    首先我们需要思考,很多问题。

    1.当很多人访问统一个网服务器,服务器如何来区分不同的用户呢?

      :sessionid,sessionid保证了浏览器和服务器唯一性的通信凭证号码,session保存在服务器上,
        sessionid保存在浏览器等客户端,服务器根据浏览器发送来的sessionid作为一个唯一的key值找到
        对应的用户,所以说sessionid的唯一性用来区别和查询用户信息,因此sessionid的作用不言而喻了吧。

    2.我们经常说浏览器关闭后session就会被清除,那session有生命周期么?

    :有的,这个是服务器的配置,浏览器关闭只是把sessionid给清除了,所以在此打开浏览器并请求服务,你的登录状态无法找到,由此你需要重新登录。
        一般情况下,浏览器如果不刷新或者不重新请求的话,服务器一般会缓存session数据20分钟左右。

    3.cookie会被缓存,sessionid保存在cookie中,sessionid一定会被清除么?

      :不一定,这个需要服务器cookie的设置了,但总体而言,因安全性考量,最好不要缓存sessionid

    4.cookie保存用户状态时需要保存sessionid么?

      :不需要,保存user_id或者其他token即可

    5.cookie是如何发送到服务器的?

      :使用http请求头,浏览器进行了封装,但在一般网络编程时可以加上。

    GET / HTTP/1.1
    Host: www.guancha.cn
    Connection: keep-alive
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-US,en;q=0.8
    Cookie: pgv_pvi=9956446208; pbm_total_match_cookie_281589=1; has_js=1; Hm_lvt_8ab18ec6e3ee89210917ef2c8572b30e=1414852570,1414879794,1414884316,1414901793; Hm_lpvt_8ab18ec6e3ee89210917ef2c8572b30e=1414901793

    6.上面的例子中没有sessionid么?

      :是的,没有,sessionid只是一个代称,这个变量名可以改变,比如在php中使用phpsessid,
        在java web中jsessionid

    7.登录前有sessionid,登陆后需要重新设置么?

      :依情况而定,如果安全性要求较高的,可以重新生成一个sessionid,另外必须先销毁之前的一个sessionid

    8.sessionid生成后如何发送到浏览器?

      :默认情况下,服务器会挂载响应消息 set-Cookie来指示浏览器更新sessionid,不需要手动更新

    如:

    HTTP/1.x 200 OK 
    X-Powered-By: PHP/5.2.1 
    Set-Cookie: TestCookie=something from somewhere; path=/ 
    Expires: Thu, 19 Nov 2007 18:52:00 GMT 
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
    Pragma: no-cache 
    Content-type: text/html

    //如果是按照第7问生成的sessionid,这个也不需要手动发送,当然也可以手动发送

    原文载自——》

  • 相关阅读:
    解决安装python3后yum不能使用情况
    一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB
    nginx 的基本配置与虚拟主机配置
    /etc/nginx/nginx.conf配置文件详解
    简单使用ab命令压力测试
    死锁和死锁检测
    centos7下搭建消息中间件--RocketMQ
    Centos7.2配置https
    Mysql 通过binlog日志恢复数据
    MySQL主从复制+备份
  • 原文地址:https://www.cnblogs.com/jing-tian/p/11004082.html
Copyright © 2020-2023  润新知