我有一个带快递,快递会话和护照的nodejs服务器进行身份验证。我的登录路线如下:
router.post('/login', passport.authenticate('local'), (req, res) => {
return res.status(200).json({
message: "Auth successful",
username: req.user.username
})
})
当我用Postman测试路线时,我在响应中收到了会话ID的cookie:qazxsw poop但是当我在React中使用axios发出请求时我没有收到任何cookie:
Postman result
以下是我的Node.js服务器中的cors:
const login = (email, password) => {
const reqBody = {
email,
password
}
const config = {
withCredentials : true,
}
return axios.post(`${serverUrl}/user/login`, reqBody, config)
}
// Cors definition
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000')
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE')
res.setHeader('Access-Control-Allow-Credentials', true)
next()
})
正如您所看到的,控制台中没有cookie选项卡,并在标题中注明。所以我想知道为什么以及如何解决这个问题。
饼干不会出现在响应中,它们会出现在标题中。请查看标题,你应该有一个'Set-Cookie'条目
所以!我找到了为什么我可以在Postman响应中看到cookie而不是我的浏览器(Chrome)的答案。我在Chrome中找到了cookie,而不是在应用程序中 - >存储 - >页面控制台中的Cookie,但是在chrome:// settings / cookies / detail?site = 192.168.2.89中。
我理解的是express-session或postman.session()仅在cookie上设置http:
生成cookie时使用HttpOnly标志有助于降低客户端脚本访问受保护cookie的风险(如果浏览器支持它)。 Network tab on Chrome
我仍然无法看到快递设置标题的位置以及如何记录服务器发送的cookie。