1

在HTTP响应头设置Cookie的我已启用了LAMBDA代理集成,并设置响应头LAMBDA输出和API网关,将返回他们作为给客户端的HTTP响应的一部分的一部分。从AWS拉姆达节点JS

示例代码:

callback(null, { 
    "statusCode": 302, 
    "Location" : "https://somewebsite.com" 
    "headers": { "headerName": "headerValue", ... }, 
    "body": "..." 
}); 

我需要在头送出3块饼干。我试过了。但是,失败:

callback(null, { 
    "statusCode": 302, 
    "Location" : "https://somewebsite.com" 
    "headers": { "Set-Cookie": [cookie1String, cookie2String, cookie3String] }, 
    "body": "..." 
}); 

[编辑] 我串接Cookie,并通过在作为响应,客户得到的cookie。但是,当客户端在“位置”中调用目标时,该请求在标题中没有cookie。

callback(null, { 
    "statusCode": 302, 
    "Location" : "https://somewebsite.com" 
    "headers": { "Set-Cookie": c1=cookie1String;c2=cookie2String; c3=cookie3String] }, 
    "body": "..." 
}); 

请帮助将这3个cookie发送给我的客户。

回答

-1

Api网关不允许您多次映射相同的标头。我通过使用不同的套管来设置cookie方法。

回调(空,{ “的StatusCode”:302, “位置”: “https://somewebsite.com” “头”:{ “设置Cookie”:COOKIE1 “的Set-Cookie”:COOKIE2}, “体“:”...“ });

+0

这显然是AWS API的破绽。如果他们在没有通知的情况下改变,我不会感到惊讶。 – vcarel

0

我会说你的问题与你的回调中的响应对象没有按照api网关预期的方式格式化有关。

这些链接特别引用aws文档。

http://docs.aws.amazon.com/apigateway/latest/developerguide/handle-errors-in-lambda-integration.html

问题与您的代码...

  • “位置”看起来并不像一个有效的属性
  • 确保你的头键/值对都使用类似的实际JSON对象JSON.stringify

不要忘记为完整的请求和响应启用api网关和lambda的日志。这两个日志将帮助您调试。