zoukankan      html  css  js  c++  java
  • 关于session和cookie的区别

    以前对于session和cookie的认识,就只是粗略的知道cookie保存在客户端,而session则保存在服务端。

    如今查了些资料,对session和cookie也有了一个初步的认识,现在来总结一下:

    session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。也就是说session其实是依赖于cookie的。

    在php中,我们可以通过修改相关配置,让session不依赖于cookie而存在

    php.ini中,把session.use_trans_sid设成1,那么连接的后面就会自己加sessionid,就通过url来传递session的key了,这时客户端就算禁止了cookie也可以使用session

    cookie是客户端的存储空间,由浏览器来维持。

    而什么时候用到cookie呢?

    这里就引入了一个会话的概念

    理论上,一个用户的所有操作都应该属于同一个会话,另一个用户的所有请求操作则应该属于另一个会话。就以购物车来举例,无论A用户在什么时间把物品加入了购物车,这都应该是属于同一个会话,不能放入B用户或C用户的购物车,因为这不属于同一个会话。

    然而,而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。

    而Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。

  • 相关阅读:
    js数组中的reverse()方法
    JavaScript语言精粹知识点总结
    JavaScript高级程序设计学习笔记第十五章--使用Canvas绘图
    js中一些小知识点总结--持续更新
    怎么预览 GitHub 项目里的网页或 Demo?
    leetcode 6. ZigZag Conversion
    leetcode 67. Add Binary
    javascript:with的用法以及延长作用域链
    水平居中
    SetInterval与setTimeout
  • 原文地址:https://www.cnblogs.com/zhp-king/p/7063043.html
Copyright © 2011-2022 走看看