定义:Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。
作用:
1. 目前Cookies 最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名、密码了。
2. 网站可以利用cookies跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个网页的停留时间等。利用这些信息,一方面是可以为用户提供个性化的服务,另一方面,也可以作为了解所有用户行为的工具,对于网站经营策略的改进有一定参考价值。例如,你在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的Cookies,也可能它只记录了你在该站点上曾经访问过的Web页,在你下次访问时,网站根据你的情况对显示的内容进行调整,将你所感兴趣的内容放在前列。这是高级的Cookie应用。
另外,有人认为网站利用cookies可能存在侵犯用户隐私的问题,但由于大多用户对此了解不多,而且这种对用户个人信息的利用多数作为统计数据之用,不一定造成用户的直接损失,因此现在对于cookies与用户隐私权的问题并没有相关法律约束,很多网站仍然在利用cookie跟踪用户行为,有些程序要求用户必须开启cookie才能正常应用。IE浏览器用户可以通过"隐私"选项中的隐私设置的高低来决定是否允许网站利用cookie跟踪自己的信息,从全部限制到全部允许,或者限制部分网站,也可以通过手动方式对具体的网站设置允许或者禁止使用cookies进行编辑。IE浏览器的默认设置是 "中级"-对部分网站利用cookie有限制。个人电脑的cookies设置(对IE浏览器而言)可通过菜单"工具-Internet选项-隐私"来查看和修改。
Cookie的传递:
首先,Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。
需要说明的是,HTTP头信息又分为HTTP请求头和HTTP响应头——顾名思义,应该都不用解释。这些HTTP头信息包含许多键值对,全都是以"键:值"的形式来保存及传递的。对于Cookie来说,在服务器端进行读取Cookie时以"Cookie"为键由客户端发送到服务器端,也就是说,以"Cookie"为键发送HTTP请求头;而在服务器端我们进行处理后,如果对Cookie有改动,则将以"Set-Cookie"为键发送HTTP响应头由服务器端传送回客户端,比如新增加cookie,删除cookie(即将cookie中的属性expires设为当面当前时间)。
Cookie的属性:
1. expires(Cookie的失效期)
2. path(关联到cookie的路径,默认为/。默认情况下,cookie会和创建它的网页以及与这个网页处于同一个目录下的网页和处于该目录的子目录下的网页关联。例如,如果一个cookie由位于http://www.163.com/news/index.html的网页创建,那么它对位于http://www.163.com/news/order.html和位于http://www.163.com/news/validate/index.html的网页也是可见的,但是对于位于http://www.163.com/lottery/index.html的网页就不可见了。)
3. domain(设置关联cookie的域名。默认情况下,只有和设置cookie的网页来自同一web服务器的页面才能访问这个cookie。但是,大的网站可能需要由多个web服务器共享cookie。例如,位于talk.test.com的服务器就可能读取info.test.com设置的cookie值。这里就引入了第三个cookie属性domain。将定由位于talk.test.com的页面创建的cookie把自己的path属性设置成"/",把domain设置成了".test.com",那么所有位于info.test.com的页面和所有位于talk.test.com的页面以及所有位于test.com域的其他服务器上的网页都能够访问这个cookie。如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的服务器的主机名。注意,不能将一个cookie的域设置成服务器所在的域之外的域。)
4. secure,values,value,name....
值得注意的是Cookie有个expires的属性,而HTTP头信息中也包含有expires这个属性。前者只是决定Cookie的失效期,而后者expires是键,用于控制请求文件的有效时间,当请求数据在有效期内时客户端浏览器从缓存请求数据而不是服务器端;当缓存中数据失效或过期,才决定从服务器更新数据。可以使用Apache的mod_expires模块来设置,可以控制应答时的Expires头内容和Cache-Control头的max-age指令,当设置了expires后,会自动输出Cache-Control的max-age信息,这个数值是expires有效期内的秒数。
以下为HTTP头信息实例:
引用
1. HTTP 请求消息头部实例:
Host:rss.sina.com.cn
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Cookie= "7i24LINKGATE=12403433566263x1173026144x12403433879953; domain=sina.com; path=/ "; <-- Cookie
If-Modified-Since:Sun, 01 Jun 2008 12:05:30 GMT
Cache-Control:max-age=0
2. HTTP 响应消息头部实例:
Status:OK - 200 <-- 响应状态码,表示 web 服务器处理的结果。
Date:Sun, 01 Jun 2008 12:35:47 GMT
Server:Apache/2.0.61 (Unix)
Last-Modified:Sun, 01 Jun 2008 12:35:30 GMT
Accept-Ranges:bytes
Content-Length:18616
Cache-Control:max-age=120
Expires:Sun, 01 Jun 2008 12:37:47 GMT
Content-Type:application/xml
Age:2
X-Cache:HIT from 236-41.D07071951.sina.com.cn <-- 反向代理服务器使用的 HTTP 头部
Set-Cookie: 7i24LINKGATE=1251903217940x1173027775x1251949947438; domain=sina.com; path=/
Via:1.0 236-41.D07071951.sina.com.cn:80 (squid/2.6.STABLE13)
Connection:close
Cookie的操作及处理:
对于不同的技术来说,处理的方式及方法各不相同,比如在Javascript,PHP,JSP,Java,C#中处理。那只是每种语言定义的API不同而已,只要理解了要达到的目的,具体实现的方法可在各自关于Cookie的操作里查询。写到这里,怎么感觉编程真的就同"面向对象"密不可分了呢:只要达到目的,管你怎么实现的,呵呵。
分享到:
相关推荐
web前端开发AJAX学习笔记
【前端知识】Token知识点笔记 在前端开发中,理解Cookie、Session、Token和JWT是非常重要的。本笔记将重点探讨Token,它是现代Web应用中广泛使用...通过阅读这些笔记,你可以更好地掌握前端身份验证和授权的核心知识。
对于初学者来说,掌握JavaWeb开发是步入Web开发领域的关键步骤。本项目实例旨在为新手提供一个全面的学习平台,通过实践操作和详细的步骤讲解,帮助他们快速理解和掌握JavaWeb的核心概念。 1. **环境搭建**:首先,...
Java Web开发笔记通常涉及Java技术栈中的Web应用开发,以及与之相关的各种组件和配置。在Java Web项目中,Maven的依赖管理是一个重要知识点,它帮助开发者管理项目中的依赖项。Maven的Dependency Scope定义了依赖项...
本笔记基于黑马程序员的课程内容,全面覆盖了Java Web的基础知识,包括前端开发技术如HTML、CSS、JavaScript,以及后端服务器端的Java Servlet和JSP(Java Server Pages)。 一、前端基础 1. ...
【前端知识】Cookie, Session, Token和JWT是Web开发中用于管理用户状态和身份验证的重要概念。本篇文章主要探讨了Cookie的定义、特点、重要属性、优缺点、使用场景及其面临的问题。 1. 背景 Cookie的诞生源于HTTP...
总的来说,《JAVA-WEB开发实战》这本笔记全面地涵盖了从基本的JAVA语法到高级的Web开发技术,是JAVA开发者提升技能、解决实际问题的宝贵资源。通过深入阅读和实践书中的案例,开发者可以系统地学习JAVA-WEB开发,并...
JavaWeb学习笔记涵盖了多个核心JavaWeb开发的主题,包括基础理论、实战项目以及一些关键技术的应用。以下是对这些知识点的详细说明: 1. **Java基础知识**:JavaWeb开发的基础始于对Java语言的理解,包括语法、面向...
在本文中,我们将深入探讨如何使用Django框架与MySQL数据库构建一个全栈Web应用程序,重点关注session和cookie在权限管理中的应用。首先,我们来看一下Django框架,它是一个基于Python的高级Web开发框架,提供了MVC...
从标题和描述中,我们可以了解到这份文档是一套关于Java Web的培训资料,由北京圣思园组织,并由张龙老师授课。此套资料包含了PPT演示文稿的内容、张龙老师的个人笔记以及整理者自己的笔记。它旨在帮助下载者更好地...
在本资源"京东商城笔记+源代码.7z"中,你将有机会深入学习和实践Web前端开发技术,特别是与京东商城网站相关的布局设计。这个压缩包包含了一份笔记和源代码,旨在帮助开发者提升前端技能,理解大型电商网站的页面...
首先,从第1章《网页开发基础》开始,我们会了解到Web应用的基本构成,包括HTML、CSS和JavaScript等前端技术。这些技术用于创建交互式的用户界面。HTML负责页面结构,CSS负责样式设计,而JavaScript则提供了动态交互...
总的来说,开发IE自动填表器涉及到Web前端技术的多个方面,包括JavaScript编程、DOM操作、浏览器扩展开发、UI设计、数据存储以及测试调试。通过这样的工具,我们可以看到IT技术在提升工作效率和用户体验方面的巨大...
在本套"javawebjsp文档详细笔记和常用包不包含前端三大件"中,我们将深入探讨JavaWeb的核心组件——JSP(JavaServer Pages)以及相关的重要知识点,但不涉及前端开发中的HTML、CSS和JavaScript这三大件。 JSP是一种...
8. **Session和Cookie**:用于维持客户端和服务器端的会话状态,是理解Web应用中用户跟踪的关键。 9. **Filter和Listener**:这两个组件在JavaWeb中起到拦截和监听作用,有助于实现更复杂的逻辑和功能。 10. **...
### JavaScript 逆向技术在阿里系Cookie解密中的应用 #### 一、JavaScript逆向概述 JavaScript逆向是指通过对前端JavaScript代码的分析与修改,来理解其内部逻辑或破解某些限制的过程。随着Web技术的发展,...
Java Web开发通常会与这些前端技术结合使用。 8. **Ajax(Asynchronous JavaScript and XML)**:Ajax允许在不刷新整个页面的情况下更新部分网页内容,提高了用户体验。在Java Web开发中,常常使用XMLHttpRequest...
另外,了解JavaScript库如jQuery,以及现代前端框架如Vue.js或React.js,能提升Web应用的交互性。 最后,对于大型项目,版本控制(Git)、持续集成/持续部署(CI/CD)工具(Jenkins)、以及自动化测试(JUnit、...
这篇“前端十万字八股文面试笔记”是一个全面的前端面试指南,涵盖了JavaScript、CSS、计算机网络、操作系统以及Vue等多个核心领域。以下是其中的关键知识点详解: **JavaScript** 1. **DOM事件处理**:`onclick`...
### jHipster 开发笔记知识点总结 #### 一、jHipster 概述 - **定义**: jHipster 是一个 Yeoman 的代码生成器,它主要用于快速构建基于 Spring Boot 和 AngularJS 的现代化 Web 应用程序。通过 jHipster,开发者...