cookie是什么意思(一篇文章带你了解更多关于cookie的知识)

/ 0评 / 0

Cookie)cookie是什么意思(一篇文章带你了解更多关于Cookie的知识)。(www.isoyu.com原创版权)饼干介绍

什么是饼干

Cookies,有时我们也用它的复数形式cookies,是服务器保存在浏览器中的数据片段。另存为键/值。每次发出请求时,请求头将自动包含此网站目录中的cookie数据。网站经常使用这种技术来识别用户是否登录。

简单来说,cookie就是服务器留给计算机用户浏览器的小文件。

HTTP是无状态协议,服务器无法记录浏览器的访问状态,这意味着服务器无法区分这两个请求是否是一个客户端发送的。这种设计严重阻碍了Web程序的设计。比如我们去网购的时候,买了一条裤子和一部手机。因为http协议是无状态的,没有其他手段,服务器无法知道用户买了什么。Cookie是解决方案之一。

Cookie实际上是服务器保存在浏览器上的一条信息。浏览器拥有Cookie后,每次向服务器发送请求时,都会同时向服务器发送信息。服务器收到请求后,可以根据信息对请求进行处理。

例如,在上面提到的在线购物中心中,当用户向购物车添加产品时,服务器会将信息打包到Cookie中,并将其发送到浏览器。当浏览器收到Cookie时,它会将其保存在内存中(请注意,这里的内存是本地内存,而不是服务器内存)。之后,每次向服务器发送请求时,浏览器都会携带Cookie,服务器可以读取Cookie来判断用户购买了哪些产品。当用户执行结账操作时,服务器可以根据Cookie信息进行结账。

Cookie的用途:在线购物中心的购物车让用户保持登录状态

饼干的缺点

Cookie作为请求或响应消息发送,这实际上增加了网络流量。

Cookie以纯文本形式传输,安全性很差。

cookie中存储的数据不稳定,用户可以随时清理cookie。每个浏览器对cookies都有限制,并且它们的使用是有限的

一个人或事物的真实外表

Chrome cookie位置:

c:\ User \ LFY \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Cookies

在ie中设置cookie:c:\ user \ LFY \ appdata \ local \ Microsoft \ windows \ inet cache单击设置->:只需查看对象

查看镀铬饼干

Cookie如上图所示

从上图可以看出,cookie是键值对的形式,并且有一个到期时间(最大年龄,会话表示在此会话期间有效)。

饼干原理

1)一般来说,Cookie就像是服务器发给浏览器的“会员卡”。每次浏览器向服务器发送请求时,都会带上这张“会员卡”。当服务器看到这张“会员卡”时,它可以识别浏览器的身份。事实上,这个所谓的“会员卡”是服务器发送的响应头:

2)如图所示,响应头Set-Cookie表示服务器正在向服务器发送“会员卡”。这个响应头的名字是Set-Cookie,后沿jsessionid = 95a 92 EC 1d 7 ccb4 adfc 24584 CB 316382 e和Path=/Test_cookie是两个键值对的结构,是服务器为这张“会员卡”设置的信息。当浏览器收到这些信息时,它会将其保存到内存或硬盘中。

3)当浏览器再次向服务器发送请求时,会携带该Cookie信息:

回到顶端

饼干的使用

创建对象

Cookie由服务器创建,由浏览器保存。因此,要创建对象,我们应该在服务器端创建cookies。cookies的创建方法如下:

1)创建一个烹饪服务器

在Servlet best net的doPost()方法中编写以下代码:

//创建一个Cookie对象
Cookie cookie = new Cookie("username", "zhangsan");
//将Cookie对象放入response对象中response.addCookie(cookie);

2)在浏览器中访问Servlet时,会在响应头中发现如下内容:Set-Set-Cookie:username = zhansan

所以我们成功地为浏览器设置了一个Cookie。当我们刷新页面时,我们会发现以下代码出现在浏览器的请求头中:

Cookie:用户名=张三

3)同样,我们可以同时设置多个Cookie:

//创建一个Cookie对象
Cookie cookie1 = new Cookie("username", "zhangsan");
Cookie cookie2 = new Cookie("password", "123456");
Cookie cookie3 = new Cookie("age", "20");
//将Cookie对象放入response对象中
response.addCookie(cookie1);
response.addCookie(cookie2);
response.addCookie(cookie3);

浏览器以以下形式发送Cookie:

cookie:username = Zhang San;密码= 123456;年龄=20岁

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

将Cookie对象添加到响应中

设置cookie

饼干的有效时间

1)经过上面的介绍,我们已经知道Cookie是存储在浏览器中的,但是可以想象浏览器不可能总是保存一个Cookie。一是占用硬盘空间,二是一个cookie可能只在某个时刻有用,不需要保存很久。

2)所以我们还需要为Cookie设置一个有效时间。

3)可以通过cookie对象的setMaxAge()设置cookie的有效时间。

SetMaxAge()接收一个int参数来设置有效时间。有四个主要参数:

设置为0,设置最大年龄(0)

Cookie将立即过期,下次浏览器发送请求时,它将不会携带Cookie。

设置大于0,设置最大年龄(60)

秒60表示60秒或1分钟,即1分钟后Cookie过期。

设置小于0,设置最大年龄(-1)

设置为负数表示当前会话有效。也就是说,Cookie在关闭浏览器后是无效的

不设置

如果未设置到期时间,默认情况下,当前会话有效。

cookie的路径

1)cookie的路径意味着浏览器在访问那些地址时应该携带cookie。我们知道浏览器会保存很多不同网站的cookie,比如百度cookie、新浪cookie、腾讯cookie等等。然后我们在访问百度的时候不能带新浪的cookie,在访问每个网站的时候都带所有的cookie是不现实的,所以我们经常需要给cookie设置一个Path属性,告诉浏览器什么时候带cookie。

2)我们通过Cookie的setPath()设置路径,由浏览器解析,所以/代表服务器的根目录。

例如,它被设置为/项目名称/路径Cookie。setpath ("/project name/path "),这样只有"/project name/path "下的资源才会携带cookies。

如:/project name/path /1.jsp、/project name/path /hello/2.jsp等

如果没有设置,默认情况下,访问资源时会携带“/project name”下的资源,如“/project name /index.jsp”和“/project name /hello/index.jsp”。

Cookie cookie = new Cookie("username", "abc"); cookie.setMaxAge(60*60*24);//秒为单位,一天后过期
cookie.setPath(getServletContext().getContextPath()+"/");
resp.addCookie(cookie);
resp.sendRedirect(getServletContext().getContextPath()+"/index.jsp");

推荐博客

程序员除了写代码还能挣多少工资?

阅读cookie

通过以上步骤,我们将cookie保存到了浏览器中。那么我们如何读取cookie中的值呢?分析:

cookie设置好进入浏览器后,每个请求都会携带cookie的值,所以我们需要从请求中取出cookie进行解析。

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