什么是Cookie

什么是Cookie

浏览器的开发者在很早的时候就已经意识到, HTTPs 的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生。 cookies 是浏览器为 Web 服务器存储的一小段信息。每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies。更具体的说,Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息 。目前有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除。持续的 Cookie 则保存在用户的 Cookie 文件中,下一次用户返回时,仍然可以对它进行调用。在 Cookie 文件中保存 Cookie,有些用户担心 Cookie 中的用户信息被一些别有用心的人窃取,而造成一定的损害。其实,网站以外的用户无法跨过网站来获得 Cookie 信息。如果因为这种担心而屏蔽 Cookie,肯定会因此拒绝访问许多站点页面。因为,当今有许多 Web 站点开发人员使用 Cookie 技术,例如 Session 对象的使用就离不开 Cookie 的支持。

 

在Django中处理持久化,大部分时候你会更愿意用高层些的session。但在此之前,我们需要停下来在底层看看如何读写cookies。

 

读取已经设置好的cookies极其简单。每一个`` HttpRequest`` 对象都有一个`` COOKIES`` 对象,该对象的行为类似一个字典你,可以使用它读取任何浏览器发送给视图(view)的cookies。

 

def show_color(request):

   if "favorite_color" in request.COOKIES:

       return HttpResponse("Your favourite color is %s" % \

                           request.COOKIES["favorite_color"])

   else:

       return HttpResponse("You don't have a favorite color.")

 

写cookies稍微复杂点。你需要使用 HttpResponse对象的 set_cookie()方法。这儿有个基于 GET 参数来设置 favorite_color

 

cookie的例子:

def set_color(request):

   if "favourite_color" in request.GET:

       response = HttpResonse("Your favourite color is now %s" % \

                             request.GET["favourite_color"]

                              )

       response.set_cookie("favourtie_color",request.GET["favourite_color"])

       return response

   else:

       return HttpResponse("You don't have a favorite color.”)

 

cookie的存储是自愿的,一个客户端不一定要去接受或存储cookie。事实上,所有的浏览器都让用户自己控制是否接受cookies。如果你想知道cookies对于Web应用有多重要,你可以试着打开这个浏览器的选项:尽管cookies广为使用,但仍被认为是不可靠的的。这意味着,开发者使用cookies之前必须检查用户是否可以接收cookie。

 

Cookie(特别是那些没通过HTTPS传输的)是非常不安全的。 因为HTTP数据是以明文发送的,所以 特别容易受到嗅探攻击。 也就是说,嗅探攻击者可以在网络中拦截并读取cookies,因此你要绝对避免在cookies中存储敏感信息。这就意味着您不应该使用cookie来在存储任何敏感信息。


 (部分内容总结自djangobook)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值