尝试在我的业余项目网站上登录请求后发送cookie。由于某种原因,当本地运行即http://localhost:3000时,它可以工作。但是,一旦我将API推送到在线状态并尝试通过我的实时网站访问它,我在Application-> Cookies->网站下看不到cookie(使用chrome)。我已经搜索了很多,并且我相信我已经关闭了每个CORS策略。
nodeJS在AWS Lambda中运行,并通过API网关调用。 API GW通过cloudfront分发进行定向(如果有影响)。
在我的express后端中,我已相应记录了我的标头:
这个的输出部分如下:
据我所知,我已正确设置了我的CORS设置。从我的前端,我已经设置了:
据我所知,我已经尽力在设置跨域请求的cookie方面做了一切。这意味着我已经仔细检查了我的cors设置,并且根据打印语句看起来cookie已经被发送了。但是为什么浏览器没有接收到呢?
如果有帮助的话,我可以发布实际网站和Github存储库,我已经卡在这里很长时间了。
更新:
我在浏览器中查看了响应头,并将其与后端api中的标题进行了比较。通过比较,我可以看到我的“set-cookie”标头未包含在响应中,尽管我清楚地看到它包含在来自后端的响应中:
nodeJS在AWS Lambda中运行,并通过API网关调用。 API GW通过cloudfront分发进行定向(如果有影响)。
在我的express后端中,我已相应记录了我的标头:
res.cookie('jwt', token, cookieOptions);
console.log('Checking cookie', res);
console.log('Checking cookie', res.cookies);
res.status(statusCode).json({
status: 'success',
data: {
user
}
});
这个的输出部分如下:
'access-control-allow-origin': [ 'Access-Control-Allow-Origin', 'https://example.com' ],
vary: [ 'Vary', 'Origin' ],
'access-control-allow-credentials': [ 'Access-Control-Allow-Credentials', 'true' ],
'access-control-allow-methods':
[ 'Access-Control-Allow-Methods',
'GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS' ],
'access-control-allow-headers':
[ 'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, X-PINGOTHER' ],
'x-ratelimit-limit': [ 'X-RateLimit-Limit', 100 ],
'x-ratelimit-remaining': [ 'X-RateLimit-Remaining', 97 ],
date: [ 'Date', 'Fri, 11 Dec 2020 23:20:28 GMT' ],
'x-ratelimit-reset': [ 'X-RateLimit-Reset', 1607732145 ],
quizappuserloggedin: [ 'QuizAppUserLoggedIn', 'false' ],
'set-cookie':
[ 'Set-Cookie', 'my-cookie'; Path=/; Expires=Sat, 12 Dec 2020 23:20:34 GMT; HttpOnly; Secure'
据我所知,我已正确设置了我的CORS设置。从我的前端,我已经设置了:
axios.defaults.withCredentials = true;
据我所知,我已经尽力在设置跨域请求的cookie方面做了一切。这意味着我已经仔细检查了我的cors设置,并且根据打印语句看起来cookie已经被发送了。但是为什么浏览器没有接收到呢?
如果有帮助的话,我可以发布实际网站和Github存储库,我已经卡在这里很长时间了。
更新:
我在浏览器中查看了响应头,并将其与后端api中的标题进行了比较。通过比较,我可以看到我的“set-cookie”标头未包含在响应中,尽管我清楚地看到它包含在来自后端的响应中:
更新2
经过进一步调查,我认为问题是与AWS API Gateway的CORS问题有关。我已经研究了这些问题,但仍然没有解决。
如何使用lambda代理集成激活向AWS API Gateway响应添加CORS标头
在express框架发送响应之前,Lambda CloudWatch日志以及API Gateway(响应标头)的CloudWatch日志。
API GW云监视器日志的响应标头:
Lambda云监控日志记录Express框架发送的响应对象: