Accès à localStorage à partir d'un webworker

Un WebWorker peut-il accéder à localStorage?

Sinon, pourquoi pas? Est-ce problématique d'un point de sécurité?

Non, localStorage et sessionStorage sont tous deux non définis dans un processus de travailleur Web.

Vous postMessage() appeler postMessage() revenir au code d'origine du travailleur et avoir ce code stocker les données dans localStorage.

Fait intéressant, un travailleur du Web peut utiliser un appel AJAX pour envoyer / récupérer des informations vers / depuis un serveur, afin d'ouvrir des possibilités, selon ce que vous essayez de faire.

Les travailleurs Web ont seulement accès aux éléments suivants:

  • XMLHttpRequest
  • Cache d'application
  • Créer d'autres travailleurs sur le Web
  • Objet navigateur
  • Objet de localisation
  • Méthode SetTimeout
  • Méthode clearTimeout
  • Méthode setInterval
  • ClearInterval méthode
  • Méthode importScripts
  • JSON
  • Ouvrier

La fenêtre ou les objets parents ne sont pas accessibles à partir d'un travailleur Web; par conséquent, vous ne pouvez pas accéder à localStorage.

Pour communiquer entre la fenêtre et le workerglobalscope, vous pouvez utiliser la fonction postMessage() et l'événement onmessage.

L'accès au DOM et à la fenêtre ne serait pas sécurisé sur un thread, car le thread enfant aurait les mêmes privilèges que son parent.

Vous pouvez utiliser IndexedDB dans WebWorkers, ce qui permet de stocker localement dans un magasin de valeurs clés. Ce n'est pas le même que localStorage, mais il existe des cas d'utilisation similaires et peut contenir beaucoup de données. Nous utilisons IndexedDB dans WebWorkers à mon travail.

Concernant la réponse de "Jhon".

Le travail IndexedDB dans SW ne démarre que sur la page en ligne. Lorsque le service est arrêté, IndexdDB sera inaccessible, donc les données précédentes ne seront pas disponibles, mais nous pouvons appeler toutes les fonctions liées à IndexedDB et créer un nouveau DB.

Je pense que c'est un bug.