使用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
也会返回空。
答案 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()