API GW Lambda 代理集成 CORS 问题

API GW Lambda proxy integration CORS issue

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

nodeJS在AWS lambda中是运行,通过API网关调用。 API GW 通过云端分发定向到(如果重要的话)。

在我的 express 后端中,我相应地记录了我的 headers:

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 似乎正在发送。但是为什么浏览器不接收它?

可以 post 实际站点和 github 回购如果有帮助的话,我现在一直被困在这里。

更新

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

更新 2

我相信经过进一步调查后,我已将其缩小为 AWS API 网关的 CORS 问题。我调查了这些,但仍然没有运气。

Amazon API gateway ignores set-cookie

在 express 框架发送响应之前来自 lambda cloudwatch 的日志以及来自 API 网关的 cloudwatch 日志(响应 headers)。

API 响应的 GW cloudwatch 日志 headers:

快速框架发送的响应 object 的 Lambda cloudwatch 日志:

事实证明这不是 CORS 问题。我只是忘记从我的云端分发转发 cookie。