gpt4 book ai didi

node.js - 在来自 AWS lambda Node JS 的 http 响应 header 中设置 Cookie

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:45 25 4
gpt4 key购买 nike

我启用了 Lambda 代理集成,并将响应 header 设置为 Lambda 输出和 API 网关的一部分,API 网关将它们作为 HTTP 响应的一部分返回给客户端。

示例代码:

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

我需要在 header 中发送 3 个 cookie。我试过了。但是,失败了:

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

[编辑]我连接了 cookie 并作为响应传入,客户端获取了 cookie。但是当客户端调用“location”中的目标时,请求头中没有cookie。

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

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

最佳答案

使用 multiValueHeaders 代替 headers

    const response = {
isBase64Encoded: true,
statusCode: 200,
multiValueHeaders : {"Set-Cookie": [`language=${language}`, `theme=${theme}`]},
body: JSON.stringify('User profile set successfully')
};
callback(null, response);

如果你需要它变得更聪明,可以考虑类似的东西

function createHeaders(headers) {
const defaultHeaders = {
'Access-Control-Allow-Origin': '*',
};
const allHeaders = Object.assign({}, defaultHeaders, headers);
const singleValueHeaders = {};
const multiValueHeaders = {};
Object.entries(allHeaders).forEach(([key, value]) => {
const targetHeaders = Array.isArray(value) ? multiValueHeaders : singleValueHeaders;
Object.assign(targetHeaders, { [key]: value });
});

return {
headers: singleValueHeaders,
multiValueHeaders,
};
}

然后在回调函数中使用。

callback(null, {
statusCode: status || 200,
body: JSON.stringify(body),
...createHeaders({ 'Set-Cookie': cookie }),
});

关于node.js - 在来自 AWS lambda Node JS 的 http 响应 header 中设置 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com