Express API GW Lambda代理集成CORS问题

Express API GW Lambda代理集成CORS问题,express,cookies,aws-lambda,aws-api-gateway,amazon-cloudfront,Express,Cookies,Aws Lambda,Aws Api Gateway,Amazon Cloudfront,尝试在我的爱好项目网站上的登录请求后发送cookie。由于某些原因,它在本地运行时工作,即。http://localhost:3000. 但当我把API推到网上并试图通过我的实时网站访问它时,我在应用程序->Cookies->网站(使用chrome)下看不到cookie。我已经在谷歌上搜索了很多,我相信我已经检查了CORS的每一项政策 nodeJS在AWS lambda中运行,并通过API网关调用。API GW通过cloudfront分发(如果有必要)直接发送到 在我的express后端中,我相

尝试在我的爱好项目网站上的登录请求后发送cookie。由于某些原因,它在本地运行时工作,即。http://localhost:3000. 但当我把API推到网上并试图通过我的实时网站访问它时,我在应用程序->Cookies->网站(使用chrome)下看不到cookie。我已经在谷歌上搜索了很多,我相信我已经检查了CORS的每一项政策

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;
据我所知,我已经做了我能找到的一切

这意味着我已经双重检查了我的cors设置,从打印语句看,cookie似乎正在发送。但为什么浏览器不接收它呢

如果有帮助的话,我可以发布实际的站点和github回购,我已经在这里呆了整整一段时间了

更新

我查看了浏览器中的响应标题,并将其与后端api中的标题进行了比较。通过比较,我可以看到我的“set cookie”头没有包含在响应中,尽管我可以清楚地看到它包含在后端的响应中:

更新2

我相信在进一步调查之后,我已经将其缩小为AWSAPI网关的CORS问题。我看了这些,但还是没有运气

在express framework发送响应之前,来自lambda cloudwatch的日志以及来自API网关的cloudwatch日志(响应头)

响应头的API GW cloudwatch日志:

express framework发送的响应对象的Lambda cloudwatch日志:


原来这不是CORS的问题。我只是忘记了从我的cloudfront发行版转发cookie。

您是想在跨源前端应用程序(即前端JS代码)中访问cookie,还是只想确保cookie随每个请求返回后端?因为后者可以按照您提供的链接中的步骤进行,但是前端代码确实无法直接访问其他来源的cookie。我正在尝试在前端访问它以进行身份验证。这家伙在做什么:他正在使用
httpOnly
cookies,所以他不可能在前端应用程序代码中访问它们。“JavaScript文档无法访问带有httpOnly属性的cookie.cookie API;它只发送到服务器。”重要的是要了解,如果您的后端位于api.example.com,而前端位于www.example.com,那么您将永远不会在www.example.com的cookie列表中看到api.example.com cookie。Cookie是特定于源的,但不存在端口隔离。但是,即使您看不到api.example.com cookie,它仍然可以通过浏览器连接到该域的请求。