[HTTP 学习笔记]Cookie

Cookie

作用

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

Cookie 通常有以下几种作用:

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

创建Cookie

  • 服务器使用Set-Cookie响应头,告知客户端应该保存该信息
Set-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)