Javascript CookieParser vs req.cookies expressjs

Javascript CookieParser vs req.cookies expressjs,javascript,node.js,cookies,express,Javascript,Node.js,Cookies,Express,当我在中读到关于req.cookies 使用cookieParser()中间件时,此对象默认为{}, 否则包含用户代理发送的cookies 当我读到 解析Cookie标头字段,并使用由Cookie名称键入的对象填充req.cookies 所以,req.cookies说如果我使用CookieParser,它将被设置为{},但是CookieParser说它将填充req.cookies 我的问题是,如果req.cookies本身提供cookies,为什么我们需要CookieParser?如果不使用Co

当我在中读到关于
req.cookies

使用cookieParser()中间件时,此对象默认为{}, 否则包含用户代理发送的cookies

当我读到

解析Cookie标头字段,并使用由Cookie名称键入的对象填充req.cookies

所以,
req.cookies
说如果我使用CookieParser,它将被设置为
{}
,但是CookieParser说它将填充
req.cookies


我的问题是,如果
req.cookies
本身提供cookies,为什么我们需要CookieParser?

如果不使用
CookieParser
,cookies将作为URL编码的头(“code>Cookie”)

这意味着,默认情况下,cookie信息将在
req.headers.cookie
中找到

顾名思义,
cookieParser
解析
Cookie
头的内容(使用恰当命名的-模块),并方便地将结果(由Cookie名称键入的对象)放入
req.Cookie
中供您欣赏


我鼓励您查看
cookieParser
的功能,以便更好地理解它最初存在的原因。

看起来这是一个文档问题。我为这个问题创建了一个解决方案

引用

我只是语法不好,我想说的是当你使用 cookieParser()将填充req.cookies对象。否则它 不存在。有很多交叉文档正在进行,因为 大多数人使用Express,就好像连接几乎不存在一样


第一份文件是错误的。它应该是“当使用cookieParser()中间件时,此对象包含用户代理发送的cookie,如果没有找到cookie,则为{}。无需检查它是否为null或未定义”。实际上,它默认为空对象,如果有任何cookie,它们将与同一对象中的键和值一起存储。但是文档中说,req.cookie将包含用户代理发送的cookie。如果没有使用
cookieParser
,对吗?express的文档中没有提到
req.headers.cookie
:(@thefourtheye它的编写方式很不幸,我同意。它在语法上很专业,但在“否则”部分之前有一个逗号(,),这意味着我们仍然处于“When The
cookieParser()
”的上下文中,因此“否则”指的是当使用
cookieParser
并实际拥有cookie数据时:)不幸的是,四个月后,express文档的措辞仍然混乱。