[APS.NET]Cookie

本文深入解析Cookie的工作原理,包括其存储机制、时效性、安全性及如何在网站间共享。探讨了Cookie在用户登录状态保持、个性化推荐等方面的实际应用,同时对比了Cookie与表单的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:在我们登陆QQ或者微信的时候,经常会设置自动登录。不得不说,自动登录可以节约我们的时间,真的是非常方便,那么自动登录是怎样实现的呢?这里就用到了Cookie。下面和大家分享一下Cookie。

(一)Cookie简介

1.是什么

Cookie是一种能够让网站【服务器把少量数据(4kb左右)储存到客户端】的【硬盘或内存】,并且读取出来的一种技术。

cookie:一小段文本,明文。存储在客户端的浏览器内存里面或者磁盘。cookie是跟网站相关,百度可以往客户端写cookie,sina也可写cookie,但是百度只能读取跟百度网站相关的cookie。
cookie会随着请求网站一块发送到后台【如果请求百度的时候,那么就把百度的cookie放到请求报文里面去,然后发送到后台。】在硬盘中存放的位置与使用的操作系统和浏览器密切相关,因此cookie不兼容浏览器。

2.Cookie的域

cookie是通过响应报文的方式写到前台。最终写入Cookie是通过响应报文头来的。
浏览器往后台发送数据时候,要把cookie放到请求报文里面去,发送到后台。

请求是子域的网页,那么主域的cookie会不会发送到后台呢?

是的。一块发送。
例如:我们在访问百度网页的到时候,百度搜索是主域,而英语、视频则是子域。
如果请求时主域页面,子域的cookie是不会发送到后台的。
如果子域想让请求主域页面的时候也一块发送到后台,设置当前Cookie的域为主域可以了。

总之【设置主域可以直接访问子域的页面,但是子域不能访问主域;如果在创建子域的时候指定动类属性为主域,即可访问主域】

 Response.Cookies["cp3"].Value = "xiaozhai";//Cookie跨域(域名)
 Response.Cookies["cp3"].Domain = "xxx.com";//设置主域

3.应用

(1)原理

当你浏览某网站时,由Web服务器放置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、浏览过的网页或者停留的时间等网站想要你保存的信息。

当你再次通过浏览器访问该网站时,浏览器会【自动将属于该网站的Cookie】发送到服务器去,服务器通过读Cookie,得知你的相关信息,就可以做出相应的动作。如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。

浏览器访问一个站点时,只将属于当前站点的Cookie发过到服务器。

(2)实际应用

淘宝上的最近浏览的商品; 账号登录的时候,上次登录的用户名;购物车(不用登录就能加入购物车,把购物车商品放入用户自己的客户端)

(二)Cookie有时效性,同时也不能保证数据的安全性

1.存放位置

最好是将要保存的内容在服务器端加密(安全)

从浏览器发来的Cookie的Expires属性值是无效的.(浏览器在向服务器发送Cookie的时候,没有将Cookie的失效时间发送过去)

Cookie数据是不安全的(银行不会用cookie)

浏览器保存Cookie有两种方式:
(1)浏览器的内存中;

(2)浏览器所在的电脑的硬盘中。
为将要写入到浏览器的Cookie对象设置失效时间(默认失效时间为20分钟):

Cookie.Expires = DateTime.Now.AddMinutes(5);//设置CookIE5分钟后失效

Cookie存储的是与网站相关的文本字符串数据。
Cookie的存储方式有两种

不指定过期时间指定过期时间
存储在客户端浏览器内存中存储在客户端的键盘上

Cookie是与具体的网站有关的,如果我们将 Cookie设置了过期时间,那么当用户在指定时间内访问网站
那么属于该网站的Cookie数据会放在请求报文中发送过来,其它网站的 Cookie不会发送。

(三)Cookie的操作

服务器设置Cookie:

     Response.Cookies["cp1"].Value = "xiaozhai";//创建Cookie
    HttpCookie cok = new HttpCookie(“uId”, “10001”);//(“键”,”值”)
	cok.Expires = DateTime.Now.AddDays(18);//设置失效日期-现在之后的18天后
    context.Response.Cookies.Add(cok); //添加到响应中
    Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);     //删除Cookie

服务器获得客户端传来的Cookie:

     string strUName=context.Request.Cookies[“uId”].Value;//从请求中获得Cookie

(四)Cookie原理

在这里插入图片描述

补充:
cookie.Path(为指定的文件夹生成Cookie)
cookie.Domain (域/域名) www.oumind.com book.oumind.com
Response.Cookies和Request.Cookies中间的关系 – 有共用部分
Cookie在浏览器硬盘的存储位置:C:\Documents and Settings\登录帐户名\Cookies
可以通过 开始-运行-cookies 自动打开。

(五)Cookie和表单的对比

表单Cookie
表单是和页面相关的,只有浏览器端提交了这些数据,服务器端才能得到。而有时候希望在服务端任意的地方存取一些和访问者相关的信息,这时候就不方便将这些信息保存到表单中了,因为如果那样的话必须随时注意在所有页面表单中都保存这些信息。Cookie是和站点相关的,并且【每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器】,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新到硬盘,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。

Cookie的缺点和表单一样,而且还不能存储过多信息。客户端、服务器端设置的Cookie双方都能读。

【服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以】。

2.Cookie优化网站

【哪怕请求jpg、js、css这种文件也会带着Cookie,因为服务器端可能要进行Session的操作,比如判断是否登录。】

互联网优化的案例:图片服务器和主站域名不一样,降低Cookie流量的传输。

在服务器端控制Cookie案例,一个页面设置Cookie,一个页面读取Cookie

(1)设置值的页面:

Response.SetCookie(new HttpCookie("UserName", TextBox1.Text));

(2)读取值的页面:

Label1.Text = Request.Cookies["UserName"].Value;

总结:cookie的应用还是非常广泛的,学习并掌握cookie的应用 可以使我们在开发中,更加完善,使用户能够有更好的体验。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值