问题描述
我正在使用cookie来管理React应用程序中的身份验证。在两种情况下,浏览器Cookie会被客户端删除。可能是什么原因造成的?
编辑:这似乎仅在Firefox Developer Edition中发生。它可以在Firefox,Chrome和Safari中正常运行。不确定他们在做什么不同的事情...
从快递服务器中获取资产
(1)用户单击一个链接,该链接触发获取操作,以从快速服务器下载文件。我下载了文件。当我再次单击相同的链接时,该cookie从浏览器中消失,并再次导致下载失败。
客户获取资产
async function promptDownload(fetchResponse,filename) {
const blob = await fetchResponse.blob();
const fileURL = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = fileURL;
a.target = '_blank';
a.download = filename;
a.click();
URL.revokeObjectURL(fileURL);
}
export const fetchAsset = async (url,filename,jwt) => {
try {
var fetchResponse = await fetch(url,{
headers: {
'Authorization': `Bearer ${jwt}`,},credentials: 'include',});
} catch (error) {
console.error(error);
return;
}
promptDownload(fetchResponse,filename);
};
nodejs服务资产:
app.get("/assets/:filename",(req,res) => {
res.download(file);
});
浏览网站(到期问题?)
(2)浏览器在用户浏览网站时随机删除cookie。我将Cookie的有效期限设置为15分钟-我已经测试了几次,但是在这15分钟之前,它会不时地删除Cookie。仅当用户更改路线时,cookie才会被删除(我正在进行异步调用,以在每次路线更改时获取新的cookie)。
除了过期和关闭浏览器之外,还有哪些常见的实例可能会导致Cookie被删除?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)