`

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对象基础知识** 在Web开发中,Cookies是用于在客户端存储少量数据的一种机制。它们是服务器发送到用户浏览器并由浏览器保存的小型文本文件。这些文件包含键值对,允许服务器在用户浏览网站时跟踪信息,...

    Servlet基础知识总结

    ### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...

    java+http+操作cookies源码整理

    在Java编程中,HTTP协议是网络通信的基础,而Cookies是HTTP协议中用于管理状态的一种机制。这个源码整理主要关注如何在Java中使用HTTP进行Cookies的操作。以下是对这些知识点的详细解释。 首先,理解Cookies的基本...

    Cookies 查看器

    **一、Cookies基础知识** 1. **定义**:Cookies是由网站服务器发送到用户浏览器并存储在本地的一小片数据。当用户再次访问同一网站时,浏览器会将这些Cookies回传给服务器,帮助服务器识别和记住用户的特定信息,如...

    JavaScript基础知识总结

    1. JavaScript 的基础知识 在学习 JavaScript 之前,你需要了解 HTML 和 XHTML 的基础。JavaScript 被设计用来向 HTML 页面添加交互行为,通过在 HTML 中插入 JavaScript 代码,可以实现页面元素的动态操作和用户...

    易语言取COOKIES目录源码.zip

    为了深入理解这个源码,你需要具备易语言的基础知识,并对网络通信和COOKIES有一定的了解。解压并查看源码,通过调试和阅读代码,可以更直观地学习到上述知识点的具体应用。如果你对易语言或者COOKIES操作感兴趣,这...

    C# 清理 Cookies 文件.txt

    #### 二、基础知识 ##### 2.1 C#简介 C#(发音为“C Sharp”)是由微软公司开发的一种面向对象的、类型安全的编程语言。它结合了C++的强大功能和Visual Basic.NET的易用性,广泛应用于Windows平台的应用开发,包括...

    最近浏览记录(Cookies)

    总的来说,下载和学习“最近浏览记录(Cookies)”的相关知识,不仅可以帮助你理解如何利用Cookies进行用户行为追踪,还可以深入理解ASP.NET和C#中处理Cookies的方法,对于提升你的IT技能和Web开发能力大有裨益。

    网络基础知识,网络基本知识大全,网络管理员基本知识,网络安全基础,计算机网络基础知识,局域网基础知识.doc

    计算机网络基础知识涵盖了许多方面,包括但不限于网络架构、协议、设备、安全和管理。在这个文档中,我们主要讨论了一些基础概念和实用的命令行工具。 首先,了解网络连接的状态至关重要。`netstat -a -n`命令可以...

    良心出品php基础知识期末考试题.doc

    这些问题涵盖了 PHP 的基础知识点,包括 MySQL 连接、PHP 循环语句、超全局变量、运算符优先级、Cookie 存储、变量类型、字符串比较、复选框类型、SESSION 会话、最近一条查询信息、结构类型变量、客户端 Cookies ...

    龙腾码支付获取Cookies浏览器插件EditThisCookie.zip

    1. **Cookies基础**:Cookies是Web应用程序用来存储客户端状态的一种机制。它们由服务器发送到用户的浏览器,并存储在本地,当用户再次访问同一网站时,浏览器会将这些Cookies回传给服务器,以便识别用户身份和提供...

    python爬虫基础知识、爬虫实例.doc

    ### Python 爬虫基础知识 Python 爬虫(Web Scraping)是指使用 Python 编写程序来自动从网站上抓取数据的过程。它通常涉及到 HTTP 请求、HTML 解析、数据处理和存储等步骤。下面是一些 Python 爬虫的基础知识: #...

    cookies注入中转生成器

    了解这些基础知识后,对于网络安全专业人士而言,掌握如何防止cookies注入至关重要。这包括采用HTTPS加密通信、对敏感数据进行哈希或加密、设置合理的cookies生命周期以及实施严格的输入验证等措施。同时,定期进行...

    cookies做的购物车

    购物车功能在电子商务网站中扮演着至关重要的角色,它允许用户临时存储想要购买的商品,...虽然在实际的电商网站中,这样的解决方案可能过于简单,但对于学习基础的Web开发和理解购物车逻辑来说,这是一个很好的起点。

    查看IE的cookies (original)

    描述“查看IE的cookies工具_original”进一步说明这可能是一个原始的或基础的工具,专门设计用于查看IE的Cookies。 **关于查看IE Cookies的知识点** 1. **什么是Cookie?** - Cookie是由服务器发送到用户的浏览器...

    易语言源码易语言QQ空间多Cookies留言源码.rar

    在深入研究这个源码时,我们需要具备一定的易语言基础知识,同时对网络通信和QQ空间的API有一定了解。通过学习和分析,不仅可以提升易语言编程技能,还可以了解到网络编程和模拟登录的具体实现。

    python web编程基础知识.docx

    ### Python Web 编程基础知识 #### GET与POST的区别 在Web开发中,GET与POST是最常用的两种HTTP请求方法。理解这两种方法的区别对于进行有效的Web应用开发至关重要。 - **GET**: - 主要用于从服务器获取数据。 ...

    python爬虫基础知识.zip

    Python爬虫基础知识是入门网络数据抓取的重要领域,它涵盖了Python编程语言的基础、网络请求、HTML解析、数据存储等多个方面。下面将详细讲解这些关键知识点。 首先,Python是一种广泛使用的高级编程语言,因其简洁...

Global site tag (gtag.js) - Google Analytics