TL;DR
您可以在 Chrome DevTools 中的以下位置找到 Cookie:
Application
> Storage
> Cookies
> URL of the express Server
从哪儿开始
为了证明express的cookies被正确存储,我从一个简单的测试服务器开始。请注意,您使用了cookie.secure = true
在你的问题中,这需要https
连接到服务器。否则,浏览器将立即删除 cookie。那么让我们使用这个简单的:
let fs = require('fs');
let privateKey = fs.readFileSync('../../../apache/conf/ssl.key/server.key', 'utf8');
let certificate = fs.readFileSync('../../../apache/conf/ssl.crt/server.crt', 'utf8');
let credentials = {key: privateKey, cert: certificate};
let https = require('https');
let app = require('express')();
let session = require('express-session');
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: {secure: true, maxAge: 10000}
}));
app.all('*', function(req, res) {
res.status(200);
res.setHeader('Content-Type', 'text/html');
if (!req.session.views) {
req.session.views = 0;
}
req.session.views++;
res.write('<p>views: ' + req.session.views + '</p>');
res.end();
});
https.createServer(credentials, app).listen(8080);
正常工作时,您应该能够打开https://localhost:8080
在您的浏览器中看到类似的内容views: 1
.
刷新浏览器时,计数应随着每个请求而增加。无请求时 cookie 的最长生存期为 10 秒。在此时间之后,计数将从1
again.
在 DevTools 中哪里可以找到 Cookie
在 10 秒的生命周期内,您可以看到下面的 cookieApplication
> Storage
> Cookies
> URL of the express Server
Chrome 开发工具内部。当然,本例中 cookie 的值是加密的。
使用AJAX时的一些提示
正如您稍后提到的,您的问题属于AJAX
来电。总的来说,都是和上面一样的。你甚至可以看到AJAX
立即创建cookieStorage
> Cookies
标签。但前提是您的 cookie 配置正确并且属于同一域。
饼干在Storage
选项卡由 cookie 选择domain
和饼干path
。该列表将显示并更新与模式匹配的所有内容。因此,在您的示例中,cookie 似乎与请求页面不匹配。
正如我在您的页面上看到的,您正在使用 URL 打开页面https://***.firebaseapp.com
并执行 AJAX 请求https://***.herokuapp.com/verify/
,这是两个完全不同的域。这就是为什么你在Storage
tab!
如果这仍然不起作用,当使用相同的域时,设置一个cookie.path
在你的session
配置。然后一切都应该按照上面的描述进行。 ;)