饼干是什么意思?(本文带你详细了解cookies。)饼干介绍
什么是饼干
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 \ I netCache,,点击设置->查看对象。
见铬饼干。
Cookie如上所示。
从上图中,我们可以看到cookie是键值对的形式,并且有一个到期时间(最大年龄,会话意味着它们在这个会话期间是有效的)。
饼干原理
1)一般来说,Cookie就像是服务器发给浏览器的“会员卡”。浏览器每次向服务器发送请求时都会带上这张“会员卡”。当服务器看到这张“会员卡”时,它可以识别浏览器的身份。事实上,这个所谓的“会员卡”是服务器发送的响应头:
2)如图Set-Cookie所示,响应头是服务器正在向服务器发送“会员卡”。响应头的名字是Set-Cookie,头的背面是jssession id = 95a 92 C1 D7 ccb4dfc 24584 CB 316382 e和Path=/Test_cookie,这是两个键值对的结构,也是服务器为这张“会员卡”设置的信息。收到此信息后,浏览器会将其保存到内存或硬盘中。
3)当浏览器再次向服务器发送请求时,会携带该Cookie信息:
回到顶端
饼干的使用
创建对象
Cookie由服务器创建,由浏览器保存。因此,要创建对象,我们应该在服务器端创建cookies。如何创建cookies:
1)创建一个CookieServlet。
在Servlet的doPost()方法中编写以下代码:
//创建一个Cookie对象Cookie cookie = new Cookie("username", "zhangsan");//将Cookie对象放入response对象中response.addCookie(cookie);2)在浏览器中访问Servlet时,会发现响应头中出现了以下内容:Set-Cookie: username=zhangsan。
所以成功的给浏览器设置了一个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
cookie的有效时间。
1)通过上面的介绍,我们已经知道了Cookie是存储在浏览器中的,但是可以想象,一般情况下,浏览器不可能永远保存一个Cookie。首先占用硬盘空,然后另一个cookie可能只在某个时间有用,不需要长时间保存。
2)所以我们还需要为Cookie设置一个有效时间。
cookie的有效时间可以通过cookie对象的setMaxAge()设置。
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设置一个Path属性,告诉浏览器什么时候带cookie。
2)我们用Cookie setPath()设置路径,由浏览器解析,所以/代表服务器的根目录。
例如,将其设置为/project name/path cookie . set path("/project name/path "),这样只有访问"/project name/path "的资源才会携带Cookie。
如:/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中获取所有cookieCookie[] cookies = request.getCookies();//遍历cookiefor(Cookie c:cookies){ String cName = c.getName();//获取cookie名String cValue = c.getValue();//获取cookie值 System.out.println("cookie:" + cName + "=" +cValue);}版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@xxxxxxxx@hotmail.com 举报,一经查实,立刻删除。