我正在开发具有
nodejs
身份验证功能的 react
后端和 jwt
前端应用程序。当验证用户身份时,我需要通过 Set-cookie header
向客户端发送 cookie。当我使用 localhost 时它工作正常,但在 render
上部署它后它不起作用。 cookie 没有被保存。在网络选项卡上,它会发出警告This attempt to set a cookie via Set-cookie header was blocked because its Domain attribute was invalid with regard to the current host url
。
网络选项卡
响应 Cookies
这是我的cookie配置文件
import urls from './urls.js';
const { hostname } = new URL(urls.CLIENT_URL);
const domain = `.${hostname.split('.').slice(-2).join('.')}`; //.onrender.com
const access = {
name: process.env.COOKIE_ACCESS_NAME,
options: {
sameSite: 'none',
domain,
httpOnly: false,
secure: true,
maxAge: process.env.ACCESS_EXP,
},
delete: {
sameSite: 'none',
domain,
httpOnly: false,
secure: true,
maxAge: new Date(null),
},
};
const refresh = {
name: process.env.COOKIE_REFRESH_NAME,
options: {
sameSite: 'none',
domain,
httpOnly: true,
secure: true,
maxAge: process.env.REFRESH_EXP,
},
delete: {
sameSite: 'none',
domain,
httpOnly: true,
secure: true,
maxAge: new Date(null),
},
};
export default { access, refresh };
在这里,我已将域名
const
更改为
.onrender.com
onrender.com
(已手动输入以检查
const domain = domain-name
)
注意作品。这是什么问题?
在 docapp-blind.onrender.com 上运行的服务器无法直接在 docapp-client.onrender.com 上设置 cookie。在您的后端 cookie 设置配置中,将域值更改为 onrender.com。
在上图中,您可以看到 set-cookie 上的域是 https://docapp-client-blind.onrender.com。将此值从后端更改为 .onrender.com