什么是Cookie

来源:互联网 发布:阿里云imap设置 编辑:程序博客网 时间:2024/05/22 17:29

什么是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)

0 0
原创粉丝点击