ios 使用localStorage时在iPhone上获取安全错误

epggiuax  于 2023-05-19  发布在  iOS
关注(0)|答案(3)|浏览(371)

当我尝试在IOS Safari中使用localStorage.setItem("");保存任何内容时,我得到此错误-
SecurityError(DOM Exception 18):操作不安全。
下面是错误的屏幕截图...

有办法解决吗?谢谢

jslywgbw

jslywgbw1#

找到答案了。阻止Cookie已在用户的Safari设置中打开。

7gcisfzg

7gcisfzg2#

我在Safari的桌面版本上遇到了这个问题。我启用了“禁用本地文件限制”,您可以通过以下方式找到它:

您的cookie设置也不允许处于“始终阻止”状态。否则你也会得到这个错误!

mum43rcc

mum43rcc3#

不仅是Safari,还有隐私浏览模式的Firefox。Chrome不会在隐身模式下阻止localStorage,但它会在每次会话时重置(这是一个更好的选择)。在这两种情况下,都不应该直接使用localStorage,而是创建一个脚本,如果它可用,则使用它,如果不可用,则使用sessionStorage。即

var backupStorage = {};
var storageMode = 'localStorage';
try {
    localStorage.length;
} catch(e) {
    try {
        sessionStorage.length;
        storageMode = 'sessionStorage';
    } catch(e) {
        storageMode = 'backupStorage';
    }
}

function setLocalStorage(key, value) {
    switch(storageMode) {
        case 'localStorage':
            localStorage.setItem(key, value);
            break;
        case 'sessionStorage':
            sessionStorage.setItem(key, value);
            break;
        case 'backupStorage':
            backupStorage[key] = value;
            break;
    }
}
function getLocalStorage(key) {
    switch(storageMode) {
        case 'localStorage':
            return localStorage.getItem(key);
        case 'sessionStorage':
            return sessionStorage.getItem(key);
        case 'backupStorage':
            return backupStorage[key];
    }
}

相关问题