当我在expressjs docs中了解req.cookies
时,
当使用cookieParser()中间件时,此对象默认为{}, 否则包含用户代理发送的cookie。
当我读到CookieParser middleware时,
解析Cookie标头字段,并使用由Cookie名称键入的对象填充req.cookies。
因此,req.cookies
表示如果我使用CookieParser,它将设置为{}
,但CookieParser表示它将填充req.cookies
。
我的问题是,如果req.cookies
本身提供Cookie,我们为什么需要CookieParser?
答案 0 :(得分:5)
不使用cookieParser
,Cookie会以URL编码的标头(“Cookie
”)形式出现。
这意味着,默认情况下,Cookie信息将在req.headers.cookie
中找到。
顾名思义,cookieParser
解析 Cookie
标题的内容(利用恰当命名的cookie - 模块)并方便地放置结果({1}}中{cookie名称所指定的对象)以供您享受。
我建议您查看req.cookies
的{{3}},以便更好地理解为什么它首先存在。
答案 1 :(得分:5)
看起来这是一个文档问题。我为此问题创建了bug
。
我的语法很糟糕,我的意思是当你使用时 cookieParser()填充了req.cookies对象。否则它 不存在。有很多跨文档正在进行,因为 大多数人使用Express就像Connect几乎不存在一样