0

Я использую следующий код для установки локального хранилища в расширении Chrome.Настройка локального хранилища в расширении Chrome

localStorage.setItem('userkey','123'); 

/* I've also tried this: 
chrome.storage.sync.set({'userkey': 123}, function() { 
      // Notify that we saved. 
      message('Settings saved'); 
     }); 
*/ 

manifest.json:

{ 
    "manifest_version": 2, 

    "name": "Shopaholic", 
    "description": "All the latest sale items from your favourite clothes shops right on your home screen", 
    "version": "1.0", 

    "chrome_url_overrides": { 
    "newtab": "index.html" 
    }, 

"content_scripts": [ 
    { 
     "matches": ["*://*/index.html"], 
     "css": ["css/style.css"], 
     "js": ["js/jquery.min.js"] 

    } 
    ], 

"options_page": "options.html", 

"permissions": [ 
      "storage" 
     ] 
} 

Однако, я получаю эту ошибку:

Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.

Если я использую закомментирована код выше, я получаю:

Uncaught TypeError: Cannot read property 'sync' of undefined

Где я пошла не так?

+0

Вы переопределяете newtab с помощью HTML-документа и затем вводите скрипт контента в этот HTML-документ? Почему бы просто не включить файлы сценария содержимого непосредственно в разметку HTML, как обычно? Можете ли вы уточнить, где/какой контекст вы взаимодействуете с localStorage? – abraham

+0

Как вы можете видеть из моего manifest.json, я переопределяю новую вкладку с файлом index.html. Я пытаюсь использовать localStorage как часть скрипта входа для хранения пользовательского ключа, который может быть проверен, чтобы узнать, зарегистрирован ли пользователь. – Sebastian

ответ

0

Прочитайте это - https://en.wikipedia.org/wiki/Same_origin_policy

В принципе, его концепцию модели безопасности веб-приложений.

Таким образом, чтобы избежать этого и нужно отключить ту же политику происхождения на Google Chrome

Так что, если на рабочем столе, откройте хромом из командной строки с помощью этой команды

chrome.exe --disable-web-security 

, а затем запустить скрипт , он не должен давать эту ошибку!

+0

Спасибо, нет способа обойти это в 'manifest.json' разрешения? В противном случае каждый пользователь расширения должен отключить одну и ту же политику происхождения в командной строке. – Sebastian

+1

Вы можете добавить это в манифест - «разрешения»: ["http://yourdomain.com", "storage"] – Ishita

+0

Что будет до моего домена? Я попробовал index.html, но ничего не изменил. – Sebastian

Смежные вопросы