本地部署中的 HttpOnly cookie 设置,但不是远程部署
HttpOnly cookie setting in local deployment but not remote deployment
我有一个本地服务器成功地在本地客户端上设置了 HtmlOnly
cookie,但远程服务器上的相同代码没有设置 cookie。
本地服务器是 http://localhost:8000
上的 Chalice 服务器 运行。响应 headers 是:
{
'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
。响应 headers 是:
{
'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 调用 工作 -- 他们 return 预期的响应 -- 但 cookie 没有设置到浏览器.关于为什么会这样有什么建议吗?
尝试直接在客户端简单设置cookie,然后发送到服务器
我的本地部署和远程部署之间的最大区别是 运行 超过 https
。最终起作用的是将 SameSite=None; Secure
设置为 cookie。
我有一个本地服务器成功地在本地客户端上设置了 HtmlOnly
cookie,但远程服务器上的相同代码没有设置 cookie。
本地服务器是 http://localhost:8000
上的 Chalice 服务器 运行。响应 headers 是:
{
'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
。响应 headers 是:
{
'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 调用 工作 -- 他们 return 预期的响应 -- 但 cookie 没有设置到浏览器.关于为什么会这样有什么建议吗?
尝试直接在客户端简单设置cookie,然后发送到服务器
我的本地部署和远程部署之间的最大区别是 运行 超过 https
。最终起作用的是将 SameSite=None; Secure
设置为 cookie。