本地存储为空
Local storage is empty
我创建了一个使用 oauth 的 SPA,它似乎可以工作,但是如果我第一次打开该应用程序就会出现问题。
然后本地存储接缝被清除。
我的应用程序是用 vue 编写的,但我觉得这不是 vue 问题。
这是我执行重定向的代码。
let nonce = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < 32; i++) {
nonce += characters.charAt(Math.floor(Math.random() * characters.length));
}
document.cookie = nonce;
localStorage.setItem('nonce', nonce);
windows.location.href = 'my-oauth-url...';
这是我在重定向后验证随机数的代码:
if (to.path.includes('/callback')) {
const urlSearch = new URLSearchParams(to.hash);
const nonce = extractResponseNonce(urlSearch);
alert('stored nonce ' + localStorage.getItem('nonce'));
alert('cookie ' + document.cookie)
console.log('stored nonce ' + localStorage.getItem('nonce'))
console.log('state ' + store.state.nonce)
console.log('extracted nonce ' + nonce)
// using document.cookie works
if (localStorage.getItem('nonce') != nonce) {
next('/error/nonceError')
return
}
}
如果我使用 localstoreage 比较 nonce,我得到 null,然后转到 nonce 错误页面。
如果我在一切正常后再次重做登录过程。
在执行第一次重定向之前,我通过警报检查了该值是否已设置。
PS:我一直使用firefox的私有模式来测试这个应用程序(我认为这不重要)。
您知道为什么 localstorage returns 对我来说是空的,但 cookie 已正确填充吗?
问题是 http 和 https 之间的转换。
我刚刚在我的浏览器中调用了 http,因为这是一个测试设置,所以我没有重定向到 https。
但是 redirect-URL 回到我的前端使用 https,然后 local-storage 是空的,因为 url 改变了。
另一方面,cookie 不介意 http 或 https,它只是固定在域中。
我创建了一个使用 oauth 的 SPA,它似乎可以工作,但是如果我第一次打开该应用程序就会出现问题。
然后本地存储接缝被清除。
我的应用程序是用 vue 编写的,但我觉得这不是 vue 问题。
这是我执行重定向的代码。
let nonce = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < 32; i++) {
nonce += characters.charAt(Math.floor(Math.random() * characters.length));
}
document.cookie = nonce;
localStorage.setItem('nonce', nonce);
windows.location.href = 'my-oauth-url...';
这是我在重定向后验证随机数的代码:
if (to.path.includes('/callback')) {
const urlSearch = new URLSearchParams(to.hash);
const nonce = extractResponseNonce(urlSearch);
alert('stored nonce ' + localStorage.getItem('nonce'));
alert('cookie ' + document.cookie)
console.log('stored nonce ' + localStorage.getItem('nonce'))
console.log('state ' + store.state.nonce)
console.log('extracted nonce ' + nonce)
// using document.cookie works
if (localStorage.getItem('nonce') != nonce) {
next('/error/nonceError')
return
}
}
如果我使用 localstoreage 比较 nonce,我得到 null,然后转到 nonce 错误页面。
如果我在一切正常后再次重做登录过程。
在执行第一次重定向之前,我通过警报检查了该值是否已设置。
PS:我一直使用firefox的私有模式来测试这个应用程序(我认为这不重要)。
您知道为什么 localstorage returns 对我来说是空的,但 cookie 已正确填充吗?
问题是 http 和 https 之间的转换。
我刚刚在我的浏览器中调用了 http,因为这是一个测试设置,所以我没有重定向到 https。
但是 redirect-URL 回到我的前端使用 https,然后 local-storage 是空的,因为 url 改变了。
另一方面,cookie 不介意 http 或 https,它只是固定在域中。