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

    Cookie

    1.Cookie的作用

    HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。所以通过Cookie 技术在请求和响应报文中写入Cookie信息来控制客户端的状态。

    2.浏览器与服务器交互---Cookie

    浏览器向服务器发起请求,服务器端收到请求后会发送一个响应报文,其中有一个叫做Set-Cookie 的首部字段信息会通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
    服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

    3.解决Cookie不安全的问题

    可以为Cookie内容加密或者在HTTPS,SSL安全的协议中使用Cookie

    4.那在一个G浏览器上为什么某客网站不能同时登录两个用户呢?

    因为G浏览器的Cookie中有一个字段是某客网站的用户账号,所以当第二个用户登录时,原来的字段值被覆盖,原来的用户被新用户挤下去了,所以某一时刻只能有一个用户登录某客网站

    Session

    1.Session简介

    Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器向客户端浏览器发送一 个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session 依据该Cookie来识别是否为同一用户。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
    如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。
    为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

    2.如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?

    Java Web提供了另一种解决方案:URL地址重写。
    URL地址重写的原理是将该用户Session的id信息重写 到URL地址中。HttpServletResponse类提供了encodeURL(Stringurl)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中

  • 相关阅读:
    Roslyn 编译器和RyuJIT 编译器
    go语言---defer
    go语言---for
    go语言--time.After
    go语言---for range
    用gulp打包带参数资源做法与asp.net/java项目结合的自动构建方案探讨
    JQuery判断元素是否存在
    gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
    gulp同步执行任务
    gulp-rev同时将js和css文件写在一个rev-manifest.json文件里面的方式探讨
  • 原文地址:https://www.cnblogs.com/Hangtutu/p/8015398.html
Copyright © 2011-2022 走看看