cookie ,cookieo

cookie 简介什么是 cookiecookie,有时我们也用其复数形式 cookies,是服务端保存在浏览器端的数据片段。以 key/value的形式进行保

Cookie 简介

什么是cookie

Cookie(也称为复数Cookie)是服务器存储在您的浏览器上的数据片段。以键/值格式保存。每次发出请求时,请求标头都会自动包含该网站的该目录中的cookie 数据。网站经常使用此技术来识别用户是否登录以及用于其他功能。

简单地说,cookie 是服务器留在计算机用户浏览器上的一个小文件。

HTTP是无状态协议,服务器无法记录浏览器的访问状态。也就是说,服务器无法区分这两个请求是否是由同一个客户端发出的。这种类型的设计给网页程序设计带来了严重的问题。示例:当我在网上购物时,我买了裤子和手机。 http协议是无状态的,因此服务器不通过其他手段无法知道用户购买了什么。而cookies就是解决方案之一。 Cookie 实际上是服务器存储在您的浏览器中的一条信息。当浏览器收到cookie时,每次向服务器发出请求时,浏览器都会将此信息发送到服务器,以便服务器可以根据此信息处理请求。示例:在上面提到的在线商城中,当用户将商品添加到购物车时,服务器会将此信息封装在cookie 中并将其发送到浏览器。您的浏览器接收并存储cookie。内存(注意,这里的内存是本地内存,而不是服务器内存) 每当向服务器发送请求时,浏览器都会发送一个cookie,当用户可以确定他们购买了哪些产品时,服务器会读取并存储该cookie。当用户进行结账操作时,服务器可以根据cookie信息进行支付。 Cookie 的用途: 在线购物中心中的购物车保持用户登录Cookie 的缺点Cookie 作为请求或响应消息发送,这会大大增加网络流量。

Cookie 以明文形式发送,这降低了它们的安全性。

cookie 中存储的数据不稳定。用户可以随时清除cookie,并且cookie的使用有限制。

庐山真面目

Chrome cookie 位置:

C:\Users\lfy\AppData\Local\Google\Chrome\用户数据\Default\Cookies

Cookie 位置(即:C:\Users\lfy\AppData\Local\Microsoft\Windows\InetCache) 单击设置- 查看对象。

在Chrome 中显示cookie

5c9a16af4e844cfe8ed3eb2998bd3b94~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717735444&x-signature=IP97pAk%2FaIc4eNJ%2F5%2F5OzCm%2BhIk%3D

Cookie如上图

从上图可以看出,cookie是键值对的形式,并且有一个过期时间(Max-Age,session表示在本次会话内有效)。

Cookie 原理

1) 一般来说,cookie就像一张“会员卡”,从服务器发送到浏览器,一旦服务器验证了这张“会员卡”,浏览器每次向浏览器发送请求时都会使用这张“会员卡”获取服务器。您的浏览器的身份可以被确定。其实这个所谓的“会员卡”就是服务器发送的一个响应头。

edb844fe3af944c891087f95b0dba249~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717735444&x-signature=8nS%2ByUAwc%2FxPthVfT3%2F5Cy8AwyE%3D

2) 如图所示,Set-Cookie响应头向服务器发送一张“会员卡”。该响应头的名称为JSESSIONID=95A92EC1D7CCB4ADFC24584CB316382E 和Path=/Test_cookie。服务器为该会员卡设置的一组键值对。当您的浏览器收到此信息时,会将其存储在内存或硬盘中。

3)当浏览器再次向服务器发送请求时,会发送以下cookie信息:

54e7d4bcc3094e04aa53701153477855~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717735444&x-signature=JwtGhs81iKuZ8pqdFevfWCUyqVA%3D

9f0a0d6364ae45188a5e8a3496057df1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717735444&x-signature=ZRSqolhZVDFoVwn14UWz8nbDF3Y%3D

返回顶部

cookie 的使用

创建一个对象

Cookie 由服务器创建并由您的浏览器存储。因此,创建对象需要在服务器端创建cookie。创建cookie 的方法如下:

1)创建CookieServlet

在servlet 的doPost() 方法中编写以下代码。

//创建一个Cookie 对象。 Cookie cookie=new Cookie(‘username’, ‘zhangsan’); //将Cookie 对象放入响应对象中。 response.addCookie(cookie); 2) 在浏览器中访问servlet。响应头中出现以下内容:Set-Cookie: username=zhangsan

这样,一旦在浏览器中成功设置了cookie,当您刷新页面时,您将在浏览器的请求标头中看到以下代码。

Cookie: 用户名=张

3) 同样,您可以同时设置多个cookie。

//创建Cookie 对象Cookie cookie1=new Cookie(‘用户名’, ‘zhangsan’); Cookie Cookie2=new Cookie(‘密码’, ‘123456’);//将Cookie 对象放入响应对象中。 response.addCookie(cookie1);response.addCookie(cookie2);response.addCookie(cookie3);浏览器以以下格式发送cookie:

Cookie: 用户名=张;年龄=123456;

4) 设置cookie 分为两步: 创建cookie 对象。

将Cookie 对象添加到响应中。

设置cookie

Cookie有效期

1)经过上面的解释,我们已经知道cookie是存储在浏览器中的,但是一般情况下浏览器可能无法永远存储cookie。首先,cookie 会占用您的硬盘空间,其次,cookie 只能被存储。存放一段时间如果一直可用,则无需长期存放。

2)因此,您还必须设置cookie的有效期。

3) Cookie 的生存期可以通过Cookie 对象上的setMaxAge() 设置。

其中,setMaxAge()接收一个int类型参数并设置有效时间。参数主要有四种情况。

如果设置为0,setMaxAge(0) cookie 将立即禁用,浏览器下次发送请求时将不会发送cookie。

如果设置大于0,setMaxAge(60)表示有效的秒数。 60 表示60 秒或1 分钟。这意味着cookie 会在1 分钟后过期。

如果设置小于0,则setMaxAge(-1)设置为负数,表示当前会话有效。这意味着cookie 在您关闭浏览器时就会过期。

未设置如果未设置过期时间,则默认当前会话有效。

cookie路径

1)Cookie路径是指当您访问这些地址时向您的浏览器发送cookie。众所周知,浏览器会存储来自各种网站的cookie,包括百度cookie、新浪cookie 和腾讯cookie。这样的话,您访问百度时就不可能带上新浪的cookies了。当您访问每个网站时,也不可能携带所有cookie。因此,常常需要设置cookie的Path属性来告诉浏览器它的位置。随身携带这个饼干。

2) 使用cookie的setPath()设置路径。这个路径是由浏览器解析的,所以/代表服务器的根目录。

示例:/项目名称/路径如果设置为cookie.setPath(“/项目名称/路径”),则只有“/项目名称/路径”下的资源才会有cookie。

例如:/projectname/path/1.jsp、/projectname/path/hello/2.jsp等。

如果不设置,默认情况下访问“/项目名称”下的资源时会转发此信息,如“/项目名称/index.jsp”、“/项目名称/hello/index.jsp”等。

Cookie cookie=new Cookie(‘username’, ‘abc’);//以秒为单位,1天后过期cookie.setPath(getServletContext().getContextPath()+ ‘/’ ); resp.addCookie(cookie); resp.sendRedirect(getServletContext().getContextPath()+’/index.jsp’);

程序员除了写代码还能怎么挣工资?

读取cookie

上述步骤会将cookie 保存到您的浏览器中。那么我们如何读取cookie值呢?分析:

设置cookie并输入浏览器后,每个请求都包含cookie值,因此我们需要从请求中提取cookie进行分析。

//从requestCookie[]中获取所有cookie cookies=request.getCookies();//遍历cookiesfor(Cookie c:cookies){String cName=c.getName();//获取cookie名称String cValue=c.getValue(); /获取cookie值System.out.println(‘cookie:’ + cName + ‘=’ +cValue);}

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/81671.html

(0)
小条的头像小条
上一篇 2024年5月31日 下午12:43
下一篇 2024年5月31日

相关推荐

  • 服务器租用收费

    在当今互联网高速发展的时代,网络安全问题也变得越来越重要。随着网络攻击和数据泄露事件的频发,人们对于网络安全加速行业的关注也越来越高涨。而作为这个行业中不可或缺的一部分,服务器租用…

    行业资讯 2024年3月23日
    0
  • 被屏蔽的网站如何打开,一些好的 被屏蔽的网站有哪些

    除了上述原因外,一些网站还可能从事其他违法行为,例如侵犯他人隐私、散布谣言等。这些都是被封杀的重要原因。 被屏蔽的网站通常包括违反法律法规、涉及盗版内容、存在安全隐患、传播虚假信息…

    行业资讯 2024年5月8日
    0
  • 商丘网站优化

    商丘网站优化,这是一个在如今互联网时代备受关注的话题。随着互联网的迅猛发展,越来越多的企业意识到了拥有一个优质的网站对于企业发展的重要性。然而,拥有一个精美的网站并不意味着就能吸引…

    行业资讯 2024年3月19日
    0
  • 如何成为一名优秀的SEO顾问?

    想要在当今互联网时代,让自己的网站获得更多的流量和曝光,SEO顾问是必不可少的角色。然而,如何成为一名优秀的SEO顾问,却是许多人感到困惑的问题。作为一名优秀的SEO顾问,不仅需要…

    行业资讯 2024年4月8日
    0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注