http cookie诠释

浏览器和Webserver之间的关联,被设想为无状况的,这是一个很主要的设想,能够让客户端无需和效劳器坚持状况,节约珍贵的端口资本,从而能够为更多的客户链接效劳。

然则如许带来了题目,简言之,效劳器没法晓得两个要求是不是来自于同一个浏览器。但是,在页面接见计数,购物车等运用中,效劳器是须要辨别差别的浏览器的,比方客户浏览器1安排到购物车内的商品,和客户2浏览器的不能够混淆在一起。

要领是有的。比方在要求的页面中插进去一个 token,然后在下次要求时将这个 token 返回至效劳器。能够把token放到form内或许URL参数内。

然则被广为接收的是Cookie要领。cookie就是依据效劳器相应头的指导,浏览器保留的一段文本。并在随后的要求中将这些信息发送至Web效劳器,Web效劳器就能够运用这些信息来辨认差别的用户。

具体做法就是:

  1. 效劳器能够为来访的浏览器设置一个值,这个经由过程response内的Set-Cookie来完成
  2. 浏览器记着这个值,而且每次接见效劳器时,发送此值过来。能够从request内的Cookie值承载

演示

以下代码运用express.js,演示了一个接见计数的效劳:

const express = require('express')
const app = express()
app.get('/', (req, res) => {
    var count = req.header("Cookie")
    if (!count){
        count = 0 
    }
    count = parseInt(count) + 1
    res.setHeader("Set-Cookie",count)
    res.send('Your Visit page count:' + count)
})
app.get('/reset', (req, res) => {
    res.setHeader("Set-Cookie",0)
    res.send('Your Visit page count:' + 0)
})
app.listen(3000, () => console.log('Example app listening on port 3000!'))

能够翻开浏览器,比方chrome,接见localhost:3000,每次革新,能够看到:

Your Visit page count:0

的数字加1。

能够再翻开别的一个和chrome差别的浏览器,比方safari,接见localhost:3000,每次革新,能够看到:

 Your Visit page count:0

的数字加1。这两个加1的行动,两个浏览器各自加各自的,相互并不影响。

建立 cookie

经由过程发送一个称为Set-Cookie的HTTP 音讯头来建立一个 cookie,花样以下:

Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]

音讯头的第一部份,value 部份,能够是恣意字符串。然则通常是一个name=value花样的字符串。

可选项部份只会在浏览器端运用,而不会被发送至效劳器端。包括逾期时候选项,

逾期时候选项

逾期时候(expires),指定了 cookie 什么时候不会再被发送至效劳器,随后浏览器将删除该 cookie。该选项的值是一个 Wdy, DD-Mon-YYYY HH:MM:SS GMT 日期花样的值

expires=Sat, 02 May 2009 23:38:25 GMT

假如 expires 设置了一个过去的时候点,那末这个 cookie 会被马上删掉。没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,封闭浏览器意味着此次会话的完毕,

domain 选项

指定了 cookie 将要被发送至哪一个或哪些域中。默许情况下,domain 会被设置为建立该 cookie 的页面地点的域名,所以当给雷同域名发送要求时该 cookie 会被发送至效劳器。比方,本博中 cookie 的默许值将是 bubkoo.com。domain 选项可用来扩大 cookie 可发送域的数目,Yahoo! 这类大型网站,都邑有很多 *.yahoo.com 情势的站点(比方:my.yahoo.com, finance.yahoo.com 等等)。将一个 cookie 的 domain 选项设置为 yahoo.com,就能够将该 cookie 的值发送至所有这些站点。

path 选项

另一个掌握 Cookie 音讯头发送机遇的选项是 path 选项,和 domain 选项相似,path 选项指定了要求的资本 URL 中必需存在指定的途径时,才会发送Cookie 音讯头。这个比较通常是将 path 选项的值与要求的 URL 从头开始逐字符比较完成的。假如字符婚配,则发送 Cookie 音讯头:

path=/blog

在这个例子中,path 选项值会与 /blog,/blogrool 等等相婚配;任何故 /blog 开首的选项都是正当的。

secure 选项

只有当一个要求经由过程 SSL 或 HTTPS 建立时,包括 secure 选项的 cookie 才被发送至效劳器。比方:

Set-Cookie: value; secure





    原文作者:1000copy
    原文地址: https://segmentfault.com/a/1190000014066842
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞