Erro não capturado: SECURITY_ERR: DOM Exceção 18 quando tento definir um cookie


121

Recebo o seguinte erro na janela de ferramentas do desenvolvedor do Chrome quando tento definir um cookie usando este plugin jQuery:

Erro não capturado: SECURITY_ERR: exceção 18 do DOM

O que esse erro significa e como posso corrigi-lo? Eu recebo o mesmo erro quando uso este plugin jQuery.


Se o seu problema estiver relacionado à tela. Esta é a resposta stackoverflow.com/questions/2390232/…
jose920405

Respostas:


151

Você provavelmente está usando isso em um arquivo local pelo file://esquema de URI, que não pode ter cookies definidos. Coloque-o em um servidor local para que você possa usá-lo http://localhost.


26
Também aconteceu comigo usando getImageData () em uma tela quando carregado do arquivo: //.
Timmmm 23/01

6
Boa chamada, também acontece ao chamar getImageData () para uma imagem carregada de outro host. Movendo o arquivo para o mesmo domínio / protocolo / etc. corrige isso.
Mike clagg

28
Dica profissional: se você possui o Python instalado, basta digitar python -m SimpleHTTPServero diretório raiz do seu site e encontrá-lo hospedado em localhost: 8000 .
Thomas

5
Para Python 3, para obter o mesmo efeito que você precisa fazerpython -m http.server 8000
Kat

2
Se você é um desenvolvedor iOS, pode estar interessado em saber que também tive esse problema ao tentar usar o localStorage depois de carregar o HTML diretamente no controle UIWebView. stackoverflow.com/questions/11371441/…
Felipe Sabino

18

Eu também tive esse problema ao desenvolver no HTML5 local. Eu tive problemas com imagens e função getImageData. Por fim, descobri que é possível iniciar o chrome com a opção de comando --allow-file-access-from-file, que se livra dessa segurança de proteção. A única coisa é que isso torna seu navegador menos seguro e você não pode ter uma instância do Chrome com o sinalizador ativado e outra sem o sinalizador.


4
Quando você usa --allow-file-access-from-files (observe que agora é plural), lembre-se de que a opção só entra em vigor se não houver outras instâncias do Chrome em execução.
BlueMonkMN

11

Você também pode "consertar" isso substituindo a imagem por sua representação Base64 embutida:

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
Útil, quando você não pretende publicar a página na Web, mas use-a apenas em máquinas locais.


4
Alguma idéia de como obter a representação base64 de uma tela de forma que ela não gere esse erro?
precisa saber é o seguinte

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); retornar ctx.getImageData (0, 0, 128, 128);
Ray Hulha 27/05

10

Diante da mesma situação jogando com Javascript . Infelizmente, o Chrome não permite acessar trabalhadores de javascript armazenados em um arquivo local.

Um tipo de solução alternativa abaixo, usando um armazenamento local, é executar o Chrome com --allow-file-access-from-files( sno final), mas apenas uma instância do Chrome é permitida, o que não é muito conveniente para mim. Por esse motivo, estou usando o Chrome Canary, com acesso a arquivos permitido.

Aliás, no Firefox, não existe esse problema.


Eu gostaria de poder votar mais de uma vez. Sua resposta me salvou MUITO tempo batendo minha cabeça contra a tela !! Muitíssimo obrigado!!
Jaime

@Jaime my prazer;)
Endre Simo


4

Eu tive esse problema ao usar a API do histórico.

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

Mesmo com um servidor local (localhost), você deseja adicionar 'http: //' ao seu URL para ter algo semelhante a:

http://localhost...

3

Eu não estava completamente feliz com o --allow-file-access-from-files solução, porque estou usando o Chrome como meu navegador principal e não estava muito feliz com essa brecha que estava abrindo.

Agora estou usando o Canary (a versão beta do chrome) para o meu desenvolvimento com a bandeira ativada. E a mera versão do Chrome para os meus blogs reais: os dois navegadores não compartilham a bandeira!


1
Para aqueles de vocês curioso, é agora --allow-file-access-from-arquivos (com um s)
Shane Reustle

2

Também é possível receber esse erro se você estiver usando o novo recurso de notificação (até agora webkit) antes de obter permissão.

Primeira corrida:

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

Execute mais tarde:

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

As funções de permissão de solicitação precisam ser acionadas a partir de um evento causado pelo usuário, caso contrário, não serão exibidas.


1

Eu estava recebendo esse erro no Safari móvel ao usar o ASP.NET MVC para retornar um FileResult com a sobrecarga que retorna um arquivo com um nome de arquivo diferente do original. Assim,

return File(returnFilePath, contentType, fileName);

daria o erro no safari móvel, onde, como

return File(returnFilePath, contentType);

não faria.

Nem me lembro por que pensei que o que estava fazendo era uma boa ideia. Tentando ser esperto, eu acho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.