Bra*_*050 5 httpcookie setcookie aws-lambda aws-api-gateway
我正在尝试在我的 aws lambda 函数响应中设置 cookie。我没有任何标头映射,因为我正在使用 lambda 代理与 API Gateway 集成。lambda 函数中的响应代码如下所示:
exports.handler = async (event) => {
const response = {
statusCode: 200,
"multiValueHeaders": {
"Set-Cookie": ["gtgm=6c7729687d5ff1a05f1a5dfb15ce3b8fa3f2b590; path=/; expires=Fri, 13-Feb-2032 13:27:44 GMT; secure; HttpOnly; SameSite=None"]
},
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Credentials": true,
},
};
return response;
};
Run Code Online (Sandbox Code Playgroud)
我使用 fiddler 检查响应,我可以在响应中看到“Set-Cookie...”,这让我相信上面的代码是正确的?问题是浏览器只是忽略它并且除了 AWS DNT cookie 之外根本不设置任何 cookie。我不确定还需要检查什么,或者我是否遗漏了 cookie 配置中的任何内容。
这就是我的请求:
<Button
onClick={() => {
fetch(
"https:mysupercoolapi.com/cookie-test/",
{
// credentials: "include",
headers: {
"Content-Type": "application/json",
// "Access-Control-Allow-Credentials": "true",
},
}
)
.then((response) => response.json())
.then((data) => {
console.log(data);
});
}}
>
Cookie Test
</Button>
Run Code Online (Sandbox Code Playgroud)
不确定我错过了什么或者哪里出了问题。
我想自己解决这个问题。上面的设置很好,但浏览器要求您正确设置以下内容才能实际设置 cookie:
关键是正确配置请求和响应标头。当使用像 AWS 这样的东西时,这很难做到,但当使用像express.js这样可以使用中间件的东西时,这就容易得多。
归档时间: |
|
查看次数: |
4504 次 |
最近记录: |