Req.headers.cookie是空的,即使在请求标头中有Cookie

时间:2017-06-13 11:21:08

标签: javascript node.js express

使用Express我有以下设置:

const express = requires("express");
const path = requires("path");
const bodyParser = requires("body-parser");
const cookieParser = requires("cookie-parser");

let server = express();
server.set("port", (process.env.PORT || 5000));
server.set("views",  path.join(__dirname, "/views"));
server.set("view engine", "ejs");
server.use(cookieParser());
server.use(express.static(self.workingDirectory + "/public"));
server.use(bodyParser.json());
server.use(bodyParser.urlencoded({ extended: true }));
server.use((req, res, next) => {
    // if req.cookies exists and testcookie is undefined within req.cookies
    if ( req.cookies && typeof req.cookies["testcookie"] === "undefined" ) {
        console.log("Setting cookie! Testcookie was not found");
        res.cookie("testcookie", "test", {
            maxAge : ((((1000*60)*60)*24)*7), /* expire a week from today */
            httpOnly: true /* document.cookie doesn't return this cookie */
        });
    }
    next();
});
server.get("/", (req, res) => { res.render("pages/index"); });
server.listen(server.get("port"), () => { console.log("Server started!"); });

因此,当我访问/时,cookie被设置为适当的,但是在之后的每次访问中它都会被设置。后来我运行console.log(req.headers)  通过新的中间件,每次访问/时都会显示以下内容,即使已经设置了Cookie:

响应标头中包含cookie:

我在这里做错了吗?我无法弄清楚错误是什么......不是cookie-parser意味着使用req.cookies属性的Cookie填充req.headers.cookie吗?为什么req.headers.cookie返回空。如果我评论与req.headers.cookie有关的任何内容,cookie-parser也会返回空。

2 个答案:

答案 0 :(得分:1)

您的代码似乎没有任何问题。您的代码(编辑以删除视图引擎详细信息)有效。供参考,使用以下npm软件包版本:

subviews

添加了一个额外的中间件("dependencies": { "body-parser": "^1.17.2", "cookie-parser": "^1.4.3", "express": "^4.15.3" } )以突出显示路由上的cookie检查。

exampleMiddleWare

如果您无法完成上述工作,那么可以在其他浏览器中进行健全性检查,因为您的Cookie设置可以使用浏览器选项和插件进行覆盖或更改。

答案 1 :(得分:0)

我尝试了上面的代码段并且req.headers.cookie不是空的。我从req.header收到了cookie值。

p='C:/Users/Israe/Desktop/picture.jpg'

with open(p, 'rb') as inf:
    jpgdata = inf.read()