2013年的第一篇博文,写一写自己前段时间了解的session和cookie的概念。
然后近期还打算对linux的一些常用系统监控命令进行一个梳理,尽可能详细的把这些知识点总结起来。
so,技术总是要慢慢积累的,fighting,2013!
=====================丑陋的分割线=========================
1. session和cookie
因为http协议被设计成为无状态的,对服务端来说每一次访问它都认为是一个新的客户,而不能识别这次请求是否是由一个客户端发出的。(无辨别用户,也就无法追踪客户端的行为、管理用户是否登录等状态)为了弥补这个缺陷,所以诞生了cookie与session。这两者都可以用来保存客户端的状态,cookie用于在客户端,而响应的用在服务端。
cookie
服务器端通过set-cookie响应头来通知客户端浏览器生成对应的cookie,cookie也分持久和非持久,前者存储在内存(浏览器维护)里,后者存储于硬盘中。
cookie的格式如下:
cq
(cookie名)ccp%3D1
(cookie值)www.newgxu.cn/
(cookie域和路径)1600
(可选标志)3062532992
(The Most Significant Integer for Expired Time, in FILETIME Format)30341473
(The Least Significant Integer for Expired Time, in FILETIME Format)1037746368
(The Most Significant Integer for Creation Time, in FILETIME Format)30268048
(The Least Significant Integer for Creation Time, in FILETIME Format)*
(记录分隔符)
如果不设置过期时间,那么这个cookie则为非持久cookie,关闭浏览器后这个cookie就会被销毁。设置了过期时间的cookie则会被存储在硬盘上。浏览器每次访问一个链接,会检查这个域名和路径下有没有响应的cookie,如果cookie的作用范围(域和路径组成)包含了访问的路径,则会把cookie添加在请求头的Cookie字段里一起发送出去。
session
session是服务端用来标识用户的解决办法。从最简单的架构来理解,当一个请求到达服务端的时候,会判断这个服务端是否带有sessionID标识,如果没有,服务端会为该请求创建一个sessionID,保存在自己管理的session池里(我简单这么理解,没有深入java的httpsession实现)。如果该请求带有sessionID,则服务端会根据这个sessionID把改session取出来使用,比如使用session.getId()方法。
那么怎样能让客户端在访问的时候把sessionID一起传给服务端呢?一是使用拼凑在URL里的方式,这需要在表达或者隐藏域里写入这个sessionID;二是把sessionID写在该域名下的cookie里,这样每次访问,浏览器就会自动把sessionID给发送过来。
session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含sessionid,如果未包含,则系统会创造一个名为JSESSIONID的输出 cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的 session。这里需要注意的是session始终是有服务端创建的,并非浏览器自己生成的。
但是浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现。
所有的理解还未得到代码层面的支持,有机会会去读一读httpsession的实现。 :) 一个长远的计划
最后发现这篇文章写的不错,推荐一下:session和cookie的区别
-------- update 2013.1.28 -----
发现一个大牛写的session和cookie的文章:深入理解session和cookie
--------
===EOF===
nigelzeng 2013/1/6
相关推荐
### j2ee实验二:学习使用Session和Cookie #### 实验背景与目标 在现代Web应用开发中,理解和掌握会话管理和用户认证是至关重要的。本实验旨在通过一系列实际操作来帮助学生熟悉J2EE环境下Session和Cookie的工作...
在“源码”和“工具”标签的提示下,我们可以推断文章可能涉及了Cookie和Session的实现细节,或许还涵盖了如何在实际项目中使用它们,或者分析了一些常见的库和框架如何处理Session和Cookie。例如,Spring框架提供了...
标题“flask-session-cookie-manager”指的是一个Python应用,它专门针对Flask框架,用于管理和操作session cookie。在Web开发中,session cookie是服务器用来跟踪用户状态的一种方式,特别是在无状态的HTTP协议上...
### Session与Cookie的区别和联系 #### 一、概念解析 - **Cookie**:Cookie是一种小型的数据文件,由服务器端生成并发送给用户浏览器,浏览器在本地(如用户的硬盘)保存该文件,然后每一次请求同一网站时都会把该...
首先,我们来深入理解session和cookie的概念。在Web应用中,用户认证通常依赖于session和cookie。cookie是服务器发送到用户浏览器并存储在本地的一小块数据,用于跟踪用户状态。而session则是一种在服务器端存储用户...
### 会话cookie和持久cookie的区别 会话cookie与持久cookie的主要区别在于它们的有效期: - **会话cookie**:没有设置过期时间,其生命周期仅限于当前的浏览器会话。一旦浏览器关闭,这类cookie将被自动清除。 - **...
标题中的“TP5 Session和Cookie”指的是在PHP的ThinkPHP5框架中关于用户会话管理和Web身份验证的两个核心概念。...理解并熟练运用Session和Cookie,对于提升ThinkPHP5项目的安全性和用户体验至关重要。
### 对Session和Cookie的深刻理解 #### Session与Cookie的基本概念 在Web开发中,了解Session和Cookie是非常重要的,因为它们是实现用户会话管理和状态跟踪的关键技术。简单来说,Session和Cookie都用于存储用户...
在处理用户登录和会话管理时,`session`和`cookie`是两个核心概念。本文将深入探讨`Flask`中的`session`和`cookie`,以及如何对它们进行解密。 首先,`session`和`cookie`都是用于跟踪用户状态的方法。`cookie`通常...
ASP.NET的Session和Cookie是Web开发中的两种关键的用户状态管理技术。它们允许开发者存储和检索用户特定的信息,从而提供个性化的用户体验。了解并熟练掌握这两者,对于任何ASP.NET Web应用程序的开发者来说都至关...
完全不用session和cookie的验证码,样式自己设置,自己设置字符数
### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...
JAVA 通过 Session 和 Cookie 实现网站自动登录的技术 在网站开发中,实现自动登录功能是非常重要的,JAVA 通过 Session 和 Cookie 实现网站自动登录的技术是其中的一种方法。本文将详细介绍如何使用 Session 和 ...
本文将深入探讨SpringSession如何支持Cookie和header策略,并解析`CookieHeaderHttpSessionStrategy.java`这个文件中的关键概念和技术细节。 首先,我们来看标题提及的“SpringSession同时支持Cookie和header策略”...
【Session与Cookie原理...理解并熟练掌握Session和Cookie的使用,能够帮助开发者构建更安全、高效的应用。在实际应用中,通常会结合两者,利用Cookie存储Session ID,而Session用于存储敏感数据,以兼顾安全和性能。
JavaWeb 使用 Session 和 Cookie 实现登录认证 Session 和 Cookie 是 Web 开发中两种常用的技术,分别用于实现用户会话和客户端数据存储。本文将详细介绍如何使用 Session 和 Cookie 实现登录认证。 什么是 ...
通过以上内容,我们可以清楚地了解到Cookie与Session的基本概念及其区别,同时对于会话Cookie与持久Cookie的不同也有了更深入的理解。在实际应用中,合理选择和使用这两种机制可以帮助开发者更好地管理用户的会话...
**Session** 和 **Cookie** 是Web开发中用于保持客户端与服务器之间会话状态的重要技术。由于HTTP协议本身是无状态的,即服务器无法自动记录客户端的状态信息,因此需要通过Session和Cookie等技术手段来实现对用户...
主要介绍了thinkphp中session和cookie无效的解决方法,涉及针对BOM头的分析与删除方法,具有一定的参考借鉴价值,需要的朋友可以参考下
关于session和cookie的详细解释 <br>所有疑问通吃