zoukankan      html  css  js  c++  java
  • session与cookie的区别? 如果客户端禁止 cookie session 还能用吗?

    一、session与cookie的区别

    session:Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。由于Session存放在服务器端,所以随着时间的推移或者用户访问的增多,会给服务器增加负担。使用的时候要考虑下服务器的性能。

    cookie:Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。由于Cookie是存放在客户端,是可见的,安全性就会很低。因此不建议将一些重要的信息放在cookie中。

    区别:

    1. cookie存放在客户端,session存放在服务器端
    2. cookie不是很安全,别人可以分析你本地的cookie信息进行cookie欺骗,因此重要信息应考虑保存在服务器端
    3. session一定时间内回报存在服务器端,当访问量增大时,会影响服务器性能,从性能方面考虑应使用cookie
    4. 不同浏览器对cookie的数据大小限制不同,个数限制也不同
    5. 可以考虑将登陆信息等重要信息存放为session,不重要的信息可以放在cookie中

    联系:

    1. 都是用来记录用户的信息,以便让服务器分辨不同的用户
    2. 可以搭配使用,但都有自己的使用局限,要考虑到安全和性能的问题

    二、如果客户端禁止 cookie,session 还能用吗?

      如果浏览器禁止cookie,那么客户端访问服务端时无法携带sessionid,服务端无法识别用户身份,便无法进行会话控制,session失效。但可以通过以下几种方法:

    1. URL重写:URL重写要求将站点中的所有超链接都进行改造,在超链接后用一个特殊的参数JSESSIONID保存当前浏览器对应session的编号,这样一来,当用户点击超链接访问服务器时,服务器可以从URL后的参数中分析出JSESSIONID,从而找到对应的sesison使用.
    2. 用文件、数据库等形式保存Session ID,在跨页过程中手动调用
  • 相关阅读:
    error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的区别?
    linux命令awk的详解
    Ubuntu 能PING IP但不能PING主机域名的解决方法
    从github checkout子文件夹
    zuul简单使用
    docker for windows 10 添加阿里云镜像仓库无效问题
    Spring Boot 进行Bean Validate和Method Validate
    JVM调优-GC参数
    Spring Aop: 关于继承和execution target this @annotation
    ReentrantLock原理
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/12088924.html
Copyright © 2011-2022 走看看