AWS API-Gateway 正在添加 AWSELB Cookie。一些时间
AWS API-Gateway is adding an AWSELB Cookie. Some of the time
我正在尝试通过 AWS API 网关连接到 REST API。 REST API 需要身份验证并使用 session cookie。向 API 网关发送请求的客户端将在请求中包含 session cookie。当 API 网关连接到 REST API 时,我需要包含 cookie。大多数情况下这是有效的,但是,有时 session cookie 似乎因附加了 AWSELB cookie 而损坏。
我在 API 网关中创建了一个资源和一个指向 REST API 的 GET 方法。在 GET 方法配置中,Method Request 被配置为读取 "Cookie" header。集成请求配置为将传入 Cookie header 的内容传递给 REST API,仍然作为 Cookie。我相信此配置应该读取客户端发送的 cookie 并将其包含在对 REST API 的请求中。客户端只发送 1 个 cookie。
大多数情况下这是有效的,REST API 识别 cookie 并按预期响应。但是,有时它不起作用。 REST API 的反应就好像用户未通过身份验证一样 - 就好像 cookie 不存在或者 cookie 中的值是错误的(我认为这是问题所在)。
当我查看 REST API 收到的 cookie 的内容(使用 PHP 的 $_COOKIE)以获取成功请求时,我看到以下内容:
{"SESS":"1KDZI9w1-Gc"}
这对我来说很合适而且似乎有效。
在 REST API 拒绝请求的情况下(大约十分之一),cookie 的报告如下:
{"SESS":"1KDZI9w1-Gc, AWSELB=69436F3F12017A3019CD7D4088C8FE7CC9981879EC03298C21B00D11E135F6C2D5BB6EB9EF4CA2F57491F67AE917BF7D76679C66E3785516822E528C0314730437CFEBF999"}
看起来像另一个 cookie,即 AWS Elastic Load Balancer cookie,AWSELB,已附加到 session cookie 的末尾。 REST API 在 ELB 后面。我在 ELB 上关闭了 session 粘性。
不知道为什么要添加AWSELB cookie,客户端对API网关的请求不包含cookie。
如果 API-Gateway 或其他组件正在添加 AWSELB cookie,那么只要以正确的方式添加它,那应该不是真正的问题。它应该是一个单独的 cookie,而不是附加到 session cookie 的值。
如果我查看 REST API 在存在 AWSELB cookie 时收到的 headers,Cookie header 看起来像这样:
"SESS=1KDZI9w1-Gc, AWSELB=69436F3F12017A3019CD7D4088C8FE7CC9981879EC03298C21B00D11E135F6C2D5BB6EB9EF4CA2F57491F67AE917BF7D76679C66E3785516822E528C0314730437CFEBF999"
当发送多个 cookie 时,我认为它们应该用 semi-colon“;”分隔不是逗号“,”,似乎正在发生。
谁能告诉我如何解决这个问题?我想停止包含 AWSELB cookie 或确保以正确的方式包含它。
API Gateway 最近针对此问题部署了修复程序。请参考论坛 post here.
我正在尝试通过 AWS API 网关连接到 REST API。 REST API 需要身份验证并使用 session cookie。向 API 网关发送请求的客户端将在请求中包含 session cookie。当 API 网关连接到 REST API 时,我需要包含 cookie。大多数情况下这是有效的,但是,有时 session cookie 似乎因附加了 AWSELB cookie 而损坏。
我在 API 网关中创建了一个资源和一个指向 REST API 的 GET 方法。在 GET 方法配置中,Method Request 被配置为读取 "Cookie" header。集成请求配置为将传入 Cookie header 的内容传递给 REST API,仍然作为 Cookie。我相信此配置应该读取客户端发送的 cookie 并将其包含在对 REST API 的请求中。客户端只发送 1 个 cookie。
大多数情况下这是有效的,REST API 识别 cookie 并按预期响应。但是,有时它不起作用。 REST API 的反应就好像用户未通过身份验证一样 - 就好像 cookie 不存在或者 cookie 中的值是错误的(我认为这是问题所在)。
当我查看 REST API 收到的 cookie 的内容(使用 PHP 的 $_COOKIE)以获取成功请求时,我看到以下内容:
{"SESS":"1KDZI9w1-Gc"}
这对我来说很合适而且似乎有效。
在 REST API 拒绝请求的情况下(大约十分之一),cookie 的报告如下:
{"SESS":"1KDZI9w1-Gc, AWSELB=69436F3F12017A3019CD7D4088C8FE7CC9981879EC03298C21B00D11E135F6C2D5BB6EB9EF4CA2F57491F67AE917BF7D76679C66E3785516822E528C0314730437CFEBF999"}
看起来像另一个 cookie,即 AWS Elastic Load Balancer cookie,AWSELB,已附加到 session cookie 的末尾。 REST API 在 ELB 后面。我在 ELB 上关闭了 session 粘性。
不知道为什么要添加AWSELB cookie,客户端对API网关的请求不包含cookie。
如果 API-Gateway 或其他组件正在添加 AWSELB cookie,那么只要以正确的方式添加它,那应该不是真正的问题。它应该是一个单独的 cookie,而不是附加到 session cookie 的值。
如果我查看 REST API 在存在 AWSELB cookie 时收到的 headers,Cookie header 看起来像这样:
"SESS=1KDZI9w1-Gc, AWSELB=69436F3F12017A3019CD7D4088C8FE7CC9981879EC03298C21B00D11E135F6C2D5BB6EB9EF4CA2F57491F67AE917BF7D76679C66E3785516822E528C0314730437CFEBF999"
当发送多个 cookie 时,我认为它们应该用 semi-colon“;”分隔不是逗号“,”,似乎正在发生。
谁能告诉我如何解决这个问题?我想停止包含 AWSELB cookie 或确保以正确的方式包含它。
API Gateway 最近针对此问题部署了修复程序。请参考论坛 post here.