【发布时间】:2021-08-16 18:51:21
【问题描述】:
我有一个本地服务器,它在本地客户端上成功设置了 HtmlOnly cookie,但远程服务器上的相同代码没有设置 cookie。
本地服务器是运行在http://localhost:8000 上的Chalice 服务器。响应头是:
{
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'http://localhost:5000',
'Access-Control-Allow-Credentials': 'true',
'Set-Cookie': 'refresh-token=my_token_value; <Max-Age>=605000; Path=/; HttpOnly'
}
本地客户端正在http://localhost:5000' 上运行。它通过fetch调用:
fetch("http://localhost:8000/login", {
method: 'POST',
headers: {'Content-Type': 'text/plain'},
body: JSON.stringify(payload),
credentials: 'include',
mode: 'cors'
})
远程服务器正在https://my-server-domain.com/api 之类的东西上运行。响应头是:
{
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'https://my-client-domain.com',
'Access-Control-Allow-Credentials': 'true',
'Set-Cookie': 'refresh-token=my_token_value; <Max-Age>=605000; Path=/; HttpOnly'
}
远程客户端正在https://my-client-domain.com 之类的东西上运行。它的调用方式与本地客户端相同:
fetch("https://my-server-domain.com/api/login", {
method: 'POST',
headers: {'Content-Type': 'text/plain'},
body: JSON.stringify(payload),
credentials: 'include',
mode: 'cors'
})
API 调用远程服务器work——它们返回预期的响应——但是 cookie 没有设置到浏览器。关于为什么会这样的任何建议?
【问题讨论】:
标签: javascript httponly chalice