美文网首页
[HTTP 学习笔记]Cookie

[HTTP 学习笔记]Cookie

作者: 这名字真不对 | 来源:发表于2017-06-21 16:38 被阅读0次

    Cookie

    作用

    Cookie 是一段由服务器通过在请求或响应报文发送给客户端的特殊信息,客户端会记录该信息,当下次发送请求时会在请求头中附带该信息,由服务器进行识别。

    Cookie 通常有以下几种作用:

    会话状态管理(如用户登录状态、购物车)
    个性化设置(如用户自定义设置)
    浏览器行为跟踪(如跟踪分析用户行为)

    创建Cookie

    • 服务器使用Set-Cookie响应头,告知客户端应该保存该信息
    Set-Cookie: <cookie名称>=<cookie值>
    

    栗子:

    HTTP/1.1 200 OK
    Content-type: text/html
    Set-Cookie: sid=1342077140226724
    
    • 客户端发起新请求时会将以前保存过的Cookie通过请求头发送给服务器
    GET / HTTP/1.1
    Cookie: sid=1342077140226724
    

    期限

    • Session Cookie
      通常,当Cookie未做任何指定期限时,浏览器会将Cookie信息保存在内存中,浏览器关闭后便自动删除,比如我们登录一些网站时不勾选“自动登录”选项时,我们关闭浏览器登录状态就自动删除了。需要注意的是,该状态由浏览器控制,因此部分浏览器也会提供关闭浏览器不清理cookie的功能。

    • Permanent Cookie
      通过指定过期时间(Expires)或有效期(Max-Age),可以为浏览器指定一个过期时间,此时Cookie便储存在硬盘上,而不是储存于内存。

    Set-Cookie: uuid=123456; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
    //
    

    作用域

    Cookie作用域指需要发送的URL集合,它由Domain和Path指令定义。
    Domain表示Cookie所在的域。如果没有指定,默认为当前的文档地址上的主机名(但是不包含子域名)。如果指定了Domain,则一般包含子域名。

    如果设置了Domain=test.com,则Cookie包含在子域名中(如user.test.com或login.test.com)。

    Path指令表明需要发送Cookie的URL路径。字符%x2F (即"/")用做文件夹分隔符,子文件夹也会被匹配到。

    如设置Path=/docs,则下面这些地址都将匹配到:

    "/docs",
    "/docs/Web/",
    "/docs/Web/HTTP"
    

    JavaScript访问Cookie

    可以通过document.cookie创建新的Cookie,或者通过该属性访问未指定的HttpOnly标志的Cookie。

    document.cookie = "yummy_cookie=choco"; 
    document.cookie = "tasty_cookie=strawberry"; 
    console.log(document.cookie); 
    // logs "yummy_cookie=choco; tasty_cookie=strawberry"
    

    Session

    对于Cookie来说,通过HTTP协议传输的信息均是明文传输,任何人都可以截获、篡改HTTP请求。因此客户端传来的信息是不可靠的,那么有什么办法来解决这个问题呢?

    数据传输时,服务器与客户端之间不使用明文传输,而是传输加密后的密文,当服务器接收到密文后将密文解析,如果信息正确再通过解析后的密文找到对应数据返回给客户端。

    这个过程我们成为会话(session),即客户端与服务器之间一对一的交互。

    参考:
    HTTP cookies

    相关文章

      网友评论

          本文标题:[HTTP 学习笔记]Cookie

          本文链接:https://www.haomeiwen.com/subject/fjdtcxtx.html