zoukankan      html  css  js  c++  java
  • Http协议中Cookie详细介绍

      Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie.

    1.cookie的属性

     一般cookie所具有的属性,包括:

     Domain:域,标识当前cookie所属于哪个域或子域下面。

      此处需要额外注意的是,在C#中,如果一个cookie不设置对应的Domain,那么在CookieContainer.Add(cookies)的时候,会死掉。对于服务器返回的Set-Cookie中,如果没有指定Domain的值,那么其Domain的值是默认为当前所提交的http的请求所对应的主域名的。比如访问

    http://www.example.com,返回一个cookie,没有指明domain值,那么其值默认为www.example.com。

     Paht:表示cookie的所属路径。

     Expire time/Max-age:表示了cookie的有效期。

     expire的值,是一个时间,过了这个时间,该cookie就失效了。或者是用max-age指定当前cookie是在多长时间之后而失效。如果服务器返回的一个cookie,没有指定其expire time,那么表明此cookie有效期只是当前的session,即是session cookie,当前session会话结束后,就过期了。对应的,当关闭(浏览器中)该页面的时候,此cookie就应该被浏览器所删除了。

     secure:表示该cookie只能用https传输。一般用于包含认证信息的cookie,要求传输此cookie的时候,必须用https传输。

     httponly:表示此cookie必须用于http或https传输。这意味着,浏览器脚本,比如JavaScript中,是不允许访问操作此cookie的。

    2.服务器发送cookie给客户端

     从服务器端,发送cookie给客户端,是对应的Set-Cookie。包括了对应的cookie的名称、值以及各个属性。例如: 

     Set-Cookie: lu=Rg3vHJZnehYLjVg7qi3bZjzg; Expires=Tue, 15 Jan 2013 21:47:38 GMT; Path=/; Domain=.169it.com; HttpOnly

     Set-Cookie: made_write_conn=1295214458; Path=/; Domain=.169it.com

     Set-Cookie: reg_fb_gate=deleted; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/; Domain=.169it.com; HttpOnly

    3.从客户端把cookie发送到服务器

     从客户端发送cookie给服务器的时候,是不发送cookie的各个属性的,而只是发送对应的名称和值。例如:

     GET /spec.html HTTP/1.1  

     Host: www.example.org  

     Cookie: name=value; name2=value2  

     Accept: */* 

    4.关于修改,设置cookie

     除了服务器发送给客户端(浏览器)的时候,通过Set-Cookie,创建或更新对应的cookie之外,还可以通过浏览器内置的一些脚本,比如JavaScript,去设置对应的cookie,对应实现是操作js中的document.cookie。

    5.Cookie的缺陷

    (1)cookie会被附加在每个HTTP请求中,所以无形中增加了流量。

    (2)由于在HTTP请求中的cookie是明文传递的,所以安全性成问题。(除非用HTTPS)

    (3)Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。

  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/susanhonly/p/8509122.html
Copyright © 2011-2022 走看看