121 votes

Erreur involontaire : SECURITY_ERR : DOM Exception 18 lorsque j'essaie de définir un cookie

J'obtiens l'erreur suivante dans la fenêtre des outils de développement de Chrome lorsque j'essaie de définir un cookie en utilisant ce Plugin jQuery :

Erreur involontaire : SECURITY_ERR : Exception DOM 18

Que signifie cette erreur et comment puis-je la corriger ? J'obtiens la même erreur lorsque j'utilise ce Plugin jQuery.

0 votes

Si votre problème est lié à la toile. Voici la réponse stackoverflow.com/questions/2390232/

151voto

Eli Grey Points 17553

Vous l'utiliserez probablement sur un fichier local par l'intermédiaire de l'application file:// URI, qui ne peut pas avoir de cookies. Mettez-le sur un serveur local pour que vous puissiez utiliser http://localhost .

0 votes

Wow, je suis surpris que vous ayez réussi à comprendre ce que signifie ce message d'erreur. En parlant d'erreurs vagues... Merci, mec.

26 votes

Cela m'est également arrivé en utilisant getImageData() sur un canevas chargé depuis file://.

6 votes

Bon appel, cela arrive aussi quand on appelle getImageData() pour une image chargée depuis un autre hôte. Déplacer le fichier vers le même domaine/protocole/etc. résout le problème.

18voto

alocaly Points 569

J'ai également rencontré ce problème en développant le HTML5 en local. J'avais des problèmes avec les images et la fonction getImageData. Finalement, j'ai découvert que l'on peut lancer chrome avec le commutateur de commande --allow-file-access-from-file, qui se débarrasse de cette sécurité de protection. La seule chose est que cela rend votre navigateur moins sûr, et vous ne pouvez pas avoir une instance de chrome avec le drapeau activé et une autre sans le drapeau.

4 votes

Lorsque vous utilisez --allow-file-access-from-files (remarquez qu'il s'agit maintenant d'un pluriel), vous devez vous rappeler que l'option ne prend effet que si aucune autre instance de Chrome n'est déjà en cours d'exécution.

11voto

Ibolit Points 1825

Vous pouvez également "corriger" ce problème en remplaçant l'image par sa représentation Base64 en ligne :

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";

Utile, lorsque vous n'avez pas l'intention de publier la page sur le web, mais de l'utiliser sur des machines locales uniquement.

4 votes

Avez-vous une idée de la façon d'obtenir la représentation en base64 d'un canevas de manière à éviter cette erreur ?

0 votes

Var canvas = document.createElement("canvas") ; canvas.width = 128 ; canvas.height = 128 ; var ctx = canvas.getContext('2d') ; ctx.fillRect(25,25,100,100) ; ctx.clearRect(45,45,60,60) ; ctx.strokeRect(50,50,50,50) ; return ctx.getImageData(0, 0, 128, 128) ;

10voto

Simo Endre Points 2569

Confronté à la même situation en jouant avec Javascript webworkers . Malheureusement Chrome ne permet pas d'accéder aux travailleurs javascript stockés dans un fichier local.

Une sorte de solution de contournement en dessous de l'utilisation d'un stockage local est de faire tourner Chrome avec --allow-file-access-from-files (avec s à la fin), mais une seule instance de Chrome est autorisée, ce qui n'est pas très pratique pour moi. C'est pourquoi j'utilise Chrome Canary, avec l'accès aux fichiers autorisé.

BTW dans Firefox il n'y a pas un tel problème.

0 votes

J'aimerais pouvoir upvoter plus d'une fois. Votre réponse vient de me faire gagner des TONNES de temps à me taper la tête contre l'écran ! !! Beaucoup, beaucoup de merci !

5voto

atimb Points 93

Cette erreur apparaît si vous essayez de créer un travailleur web avec un schéma URI de données.

var w = new Worker('data:text/javascript;charset=utf-8,onmessage%20%3D%20function()%20%7B%20postMessage(%22pong%22)%3B%20%7D'); w.postMessage('ping');

Ce n'est pas autorisé selon la norme : http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#dom-worker

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X