`

http cookies基础知识(转)

 
阅读更多

  Http协议是无连接的,意思是说当我们的浏览器请求服务器的一个页面时,一旦请求完成,服务器作出响应,客户端浏览器拿到这个页面的内容,立即断开连接,说白了就是Socket关闭了,浏览器和服务器之间就没有连接了。

       那有个问题比如,我们上京东买本书,在还未登陆的情况下(避免与Session冲突),通常情况是在一个页面点击购买或加入购物车,点击结账会跳到另一个页面,另一个页面会显示我们购买的书。  

       既然Http协议是无连接的,当我们通过第一个页面点击购买后,连接就断了,哪到第二个页面,它(服务器)怎么知道我买的是哪本书,或者知道我买的是什么,或者我是谁?这就是Cookie在起作用,它帮服务器记住了。(当然这里除了Cookie,还有浏览器的特性,比如每个浏览器有唯一的编号,当我请求第二个页面时,服务器会到我本地来取Cookie信息)

       因为Http协议是无连接的,所以它需要一种类似QQ聊天那样的不断与服务器保持连接的机制,用它来记录着客户端浏览器在我服务器端都干什么了,用我们的行话来说就是维护用户跟服务器间的会话状态,所以就产生了Cookie,Session, 以及Application等会话技术。

  那Cookie到底是个什么东西呢?

  Cookie是服务端写在客户端本地一个文件,你放心不会是病度或木马,因为Cookie只允许它创建txt的文本文件。客户端浏览器也可以阻止Cookie的写入,比如上面买书,如果浏览器Cookie被禁止写入,那么第二个页面购物车将看不到任何东西。还有每个网站写的Cookie都不一样,新浪可以写,搜狐也可以写,但它们都只能拿自己的Cookie。

  以Java为例,说说Cookie的用法:

  Cookie是以“名-值”对的形式保存的,类似Map;

  创建Cookie:new Cookie(name,value);

  setName(String name) / getName();

  setValue(String value) / getValue();

  setMaxAge(int expiry) / getMaxAge();
  利用HttpServletResponse的addCookie(Cookie cookie)方法将Cookie设置到客户端;
  利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie;

  因为Cookie可以设置存活时间setMaxAge(int expiry),因此就有了存储方式的不同:

  1.设置了存活时间的Cookie,会在客户端本地创建一份Cookie文件。

  2.没有设置存活时间的Cookie,会在客户端浏览器内存中创建一份Cookie,它在本地Cookie文件中是找不到的,它的生命周期依赖于浏览器窗口,当浏览器窗口关闭,它将消失,而且其它新开的浏览器窗口都访问不到它,只有它和它的子窗口,即通过window.open()出来的,可以访问,测试的时候可以使用快捷键ctrl+n弹出一个子窗口。

  经过测试改变设置和访问Cookie的URL路径,Cookie的访问也会有所不同:

  1.设置Cookie的Servlet URL:/servlet/SetCookies

   访问Cookie的Servlet URL:/ShowCookie

  发现SetCookies可以创建Cookie,但ShowCookie访问不到

  2.设置Cookie的Servlet URL:/SetCookies

   访问Cookie的Servlet URL:/servlet/ShowCookie

  发现SetCookies可以创建Cookie,ShowCookie也访问到

  从包结构的访问层次来说,就是因为1中,ShowCookie路径比SetCookies高一级,而2中,ShowCookie是SetCookies的子级,因此可以得出一个Jsp/Servlet设置的Cookie可以被同一路径或子路径的Jsp/Servlet访问得到。

  总结一下Cookie的特点:

  1.服务器可以向客户端写内容

  2.只能写文本内容

  3.只能拿自己webapp写入的Cookie

  4.客户端可以阻止服务器Cookie的写入

  5.Cookie分两种:

    存在于文本文件

    存在于内存(属于窗口/子窗口)

  6.一个Jsp/Servlet设置的Cookie可以被同一路径或子路径的Jsp/Servlet访问得到

 

  以上是个人学习和总结,欢迎拍砖。

分享到:
评论

相关推荐

    Cookies对象基础知识

    Cookies对象,一些基本知识,希望能帮助你们!

    Cookies的各方面知识(基础/高级)深度了解

    Cookies想必所有人都了解本文将围绕Cookies基础知识(什么是Cookies/Cookies如何传递/Cookies如何存储/Cookies如何查看)Cookies高级知识/Cookie的限制等等方方面面深入了解,感兴趣的朋友可以参考下,或许对你学习...

    JAVA 专题课程-Cookies入门

    本课程是唐亮老师推出的第二门小专题课程,所讲述的内容都属于较基础的知识,无论开发人员应用何种语言进行开发,都需要了解并掌握这些基础知识。这些小专题课程短小灵活,能够让你在极短时间内掌握一个知识点的要领...

    JavaScript组成、引入、输出、运算符基础知识讲解

    下文重点给大家介绍js组成,引入,输出,运算符基础知识,具体详解如下所示: JavaScript组成: ECMAscript 浏览器对象模型 BOM 文档对象模型 DOM // ecmascript bom dom dom (文档对象模型) 用来访问和操纵html...

    XSS跨站脚本攻击剖析与防御

    第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击...

    node与express开发

    作者不仅讲授了开发公共站点及REST API的基础知识,同时还讲解了构建单页、多页及混合Web应用的规划方式及最佳实践。具体而言,第1~5章介绍Node 和Express,搭建一个示例网站的骨架,讨论测试和QA。第6~12章介绍Node...

    XSS跨站脚本攻击剖析与防御.pdf

    第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击...

    zhaoeh.github.io

    zhaoeh.github.io博客适合Java语言开发服务器入门博客主要分为以下模块: Java基础介绍了Java语言的语法基础知识,包括数据类型,对象集合,条件结构,循环结构,文件操作,多线程,网络编程,反射等。 JavaWeb基础...

    Android持久化保存cookie的方法

    在之前先科普一下基础知识: 什么是Cookies? Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存中(如果是临时性的话)。用它可以实现状态管理的功能。我们可以存储一些少量信息到...

    零基础Python爬虫48小时速成课.txt

    46 7.06下载中间件的Cookies.mp4 47 7.07crawlspider规则爬虫.mp4 48 8.01回顾知识点.mp4 49 8.02强化规则爬虫.mp4 50 8.03图片管道的应用.mp4 51 8.04说明自定义图片管道.mp4 52 8.05scrapy中日志记录器.mp4 ...

    XSS跨站脚本gj剖析与防御.pdf

    第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击...

    requests模块.md

    爬虫基础之request模块的使用 知识点: 掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 掌握 超时参数timeout的使用 掌握 代理ip参数...

    argos-landlord:ARGOS建筑业主团队培训材料

    HTTP,PHP基础知识的基本行为 了解HTTP(Web程序正常工作所需的协议)和PHP(动态Web应用程序的服务器端语言)。 在本活动中,将使用最新版本PHP 8,并使用JetBrains PHPStorm设置开发环境。 表格,方法,标题 了解...

    新版前端高频面试题笔记+课件+源码(HTML+CSS+JavaScript)

    本视频主打内容最全最新,包括大前端基础与高频面试题,打造一站式知识长龙 服务,适合有前端基础的同学学习。 课程需知: 课程面向的同学是:有前端基础的同学。 课程内容: —.HTML5面试题 1.如何理解HTML5结构...

    PHP网络编程技术与实践 源码

    16.1 播放器的基础知识 16.1.1 Windows Media Player 16.1.2 RealPlayer 16.2 播放列表的生成 16.3 视频音频播放的应用示例 16.3.1 自己风格的Windows Media Player播放器 16.3.2 自己风格的Real MediaPlayer播放器 ...

    LINUX网站建设技术指南

    2.2.5 有关LILO的基础知识 2.3 Linux的安装 2.3.1 首先应该知道的事 2.3.2 开始安装:有关安装启动程序的选择 2.3.3 安装过程 2.3.4 最后的设置工作 2.3.5 安装LILO 2.4 Linux下的硬件设备管理 2.4.1 Linux设备管理...

Global site tag (gtag.js) - Google Analytics