Error no detectado: SECURITY_ERR: Excepción DOM 18 cuando intento configurar una cookie

121

Recibo el siguiente error en la ventana de herramientas del desarrollador de Chrome cuando intento configurar una cookie usando este complemento jQuery:

Error no detectado: SECURITY_ERR: DOM Excepción 18

¿Qué significa este error y cómo puedo solucionarlo? Me sale el mismo error cuando uso este complemento jQuery.

Pieter
fuente
Si su problema está relacionado con el lienzo. Esta es la respuesta stackoverflow.com/questions/2390232/…
jose920405

Respuestas:

151

Lo más probable es que esté usando esto en un archivo local sobre el file://esquema URI, que no puede tener cookies configuradas. Póngalo en un servidor local para que pueda usarlo http://localhost.

Eli Gray
fuente
26
También me sucedió usando getImageData () en un lienzo cuando se carga desde el archivo: //.
Timmmm
66
Buena llamada, también ocurre cuando se llama a getImageData () para una imagen cargada desde otro host. Mover el archivo al mismo dominio / protocolo / etc. lo arregla
Mike Clagg
28
Consejo profesional: si tiene instalado Python, simplemente escriba python -m SimpleHTTPServerel directorio raíz de su sitio y encuéntrelo alojado en localhost: 8000 .
Thomas
55
Para Python 3, para obtener el mismo efecto que debe hacerpython -m http.server 8000
Kat
2
Si es un desarrollador de iOS, es posible que le interese saber que también experimenté este problema al intentar usar localStorage después de cargar el HTML directamente en el control UIWebView. stackoverflow.com/questions/11371441/…
Felipe Sabino
18

También tuve este problema al desarrollar HTML5 en local. Tuve problemas con las imágenes y la función getImageData. Finalmente, descubrí que uno puede iniciar Chrome con el interruptor de comando --allow-file-access-from-file, que elimina esta seguridad de protección. Lo único es que hace que su navegador sea menos seguro, y no puede tener una instancia de Chrome con la bandera activada y otra sin la bandera.

alocaly
fuente
44
Cuando use --allow-file-access-from-files (observe que ahora está en plural), debe recordar que el cambio solo surte efecto si no hay otras instancias de Chrome que ya se estén ejecutando.
BlueMonkMN
11

También puede "arreglar" esto reemplazando la imagen con su representación en línea Base64:

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
Es útil cuando no tiene la intención de publicar la página en la web, sino que la usa solo en máquinas locales.

Ibolit
fuente
44
¿Alguna idea de cómo obtener la representación base64 de un lienzo de tal manera que no arroje este error?
devios1
var lienzo = document.createElement ("lienzo"); 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);
Ray Hulha
10

Frente a la misma situación jugando con Javascript . Desafortunadamente, Chrome no permite acceder a los trabajadores de JavaScript almacenados en un archivo local.

Un tipo de solución a continuación utilizando un almacenamiento local es ejecutar Chrome con --allow-file-access-from-files(con sal final), pero solo se permite una instancia de Chrome, lo que no es demasiado conveniente para mí. Por esta razón, estoy usando Chrome Canary, con acceso a archivos permitido.

Por cierto en Firefox no existe tal problema.

Endre Simo
fuente
Desearía poder votar más de una vez. ¡Su respuesta me ahorró TONELADAS de tiempo golpeando mi cabeza contra la pantalla! ¡¡Muchas muchas gracias!!
Jaime
@Jaime, un placer;)
Endre Simo
4

Tuve este problema al usar la API de historial.

window.history.pushState(null, null, URL);

Incluso con un servidor local (localhost), desea agregar 'http: //' a su URL para que tenga algo similar a:

http://localhost...
Mr_Pouet
fuente
3

No estaba completamente satisfecho con la --allow-file-access-from-filessolución, porque estoy usando Chrome como mi navegador principal, y no estaba muy contento con esta brecha que estaba abriendo.

Ahora estoy usando Canary (la versión beta de Chrome) para mi desarrollo con la bandera activada. Y la mera versión de Chrome para mi blogging real: ¡los dos navegadores no comparten la bandera!

alocaly
fuente
1
Para aquellos de ustedes curiosos, ahora es --allow-file-access-from-files (con una s)
Shane Reustle el
2

También se puede recibir este error si se utiliza la nueva función de notificación (hasta ahora solo webkit) antes de obtener el permiso.

Primer intento:

<!-- Get permission -->
<button onclick="webkitNotifications.requestPermission();">Enable Notifications</button>

Ejecución posterior:

// Display Notification:
window.webkitNotifications.createNotification('image', 'Title', 'Body').show();

Las funciones de permiso de solicitud deben activarse desde un evento causado por el usuario; de lo contrario, no se mostrará.

Thomas Hunter II
fuente
1

Estaba recibiendo ese error en el safari móvil cuando usaba ASP.NET MVC para devolver un FileResult con la sobrecarga que devuelve un archivo con un nombre de archivo diferente al original. Entonces,

return File(returnFilePath, contentType, fileName);

daría el error en el safari móvil, donde como

return File(returnFilePath, contentType);

no lo haría

Ni siquiera recuerdo por qué pensé que lo que estaba haciendo era una buena idea. Tratando de ser inteligente, supongo.

recién llegado
fuente