【发布时间】:2020-06-01 20:07:10
【问题描述】:
我试图在使用 scala 播放框架时从响应中设置一个 cookie。我正在创建一个名为 session 的 cookie,其值为 UUID(我知道 play 带有它自己的会话管理)。 我可以看到响应标头包含设置 cookie 指令,但未设置 cookie。
以下是设置 cookie 的控制器中的操作中的 scala 代码
val cookie= Cookie("session",
sessionToken,
httpOnly=true,
sameSite=Some(Cookie.SameSite.Lax))
Ok(Json.toJson(res))
.withCookies(cookie)
// Also tried with .bakeCookies() after the withCookies() call
我可以在 FireFox 和 Chrome 的响应中看到 cookie 标头。它们都在其开发人员工具中各自的响应 cookie 查看器中显示了看似正确格式的 cookie。
Set-Cookie: session=c0174ed1-ebd3-4a8d-a5b2-5b09a3fe616b; SameSite=Lax; Path=/; HTTPOnly
但是,在这两种浏览器中都没有设置 cookie。我尝试了真假 httpOnly,并弄乱了 maxAge 值。我尝试将域设置为 url,然后在主机文件中设置 url as suggested here.
react 前端的 URL 是
http://localhost:49161/login/hydrate
并且正在播放的端点是
http://localhost:49162/user/login/rehydrate
我也尝试在 cookie 上设置 /login/hydrate/ 的路径
前端的反应代码
// Inside async function
// methodStrings[method] = "post" in this request
axios[methodStrings[method]](url, params)
.then(result => {
resolve(result);
})
.catch(err => {
console.error(`Error with request to ${url} - ${err}`);
reject(err.response.status);
});
然后我 console.log 等待请求的结果
【问题讨论】:
-
从 JS 看不到仅 HTTP 的 cookie
-
@cchantep 是的,我想通了,但是当只有来自其他网站的 http cookie 时,它仍然没有出现在浏览器的 cookie 查看器中。另外,正如我所说,我尝试将我的 cookie 生成为仅 http 和非 http - 并且它们都不起作用
标签: reactjs scala cookies playframework axios