Uncaught Error: SECURITY_ERR: DOM Exception 18, когда я пытаюсь установить cookie

Я получаю следующую ошибку в окне инструментов разработчика Chrome при попытке установить cookie с помощью этого плагина jQuery:

Uncaught Error: SECURITY_ERR: исключение DOM 18

Что означает эта ошибка и как ее исправить? Я получаю ту же ошибку при использовании этого плагина jQuery.

9 ответов

Решение

Скорее всего, вы используете это в локальном файле над file:// Схема URI, для которой не могут быть установлены файлы cookie. Поместите его на локальный сервер, чтобы вы могли использовать http://localhost,

У меня также была эта проблема при разработке HTML5 на локальном компьютере. У меня были проблемы с изображениями и функцией getImageData. Наконец, я обнаружил, что можно запустить Chrome с помощью командного переключателя --allow-file-access-from-file, который избавляет от этой защиты. Единственное, что делает ваш браузер менее безопасным, и вы не можете иметь один экземпляр Chrome с включенным флагом, а другой без флага.

Вы также можете "исправить" это, заменив изображение встроенным представлением Base64:

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
Полезно, когда вы не собираетесь публиковать страницу в Интернете, а используете ее только на локальных компьютерах.

Столкнулся с такой же ситуацией, играя с веб-мастерами Javascript. К сожалению, Chrome не позволяет получить доступ к рабочим JavaScript, хранящимся в локальном файле.

Один из способов обхода ниже с использованием локального хранилища - запуск Chrome с --allow-file-access-from-filess в конце), но разрешен только один экземпляр Chrome, что не слишком удобно для меня. По этой причине я использую Chrome Canary с разрешенным доступом к файлам.

Кстати в Firefox такой проблемы нет.

Эта ошибка появляется, если вы пытаетесь создать веб-работника со схемой данных URI.

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');

Это не разрешено в соответствии со стандартом: http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html

У меня была эта проблема при использовании истории API.

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

Даже с локальным сервером (localhost) вы хотите добавить "http://" к вашему URL, чтобы у вас было что-то похожее на:

http://localhost...

Я не был полностью счастлив --allow-file-access-from-files решение, потому что я использую Chrome в качестве основного браузера и не очень доволен этим открытием.

Сейчас я использую Canary (бета-версию Chrome) для своей разработки с включенным флагом. И простая версия Chrome для моего реального ведения блога: два браузера не разделяют флаг!

Эту ошибку также можно получить, если использовать новую (пока что только веб-набор) функцию уведомлений до получения разрешения.

Первый забег:

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

Позже беги:

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

Функции разрешения запроса должны запускаться из события, вызванного пользователем, иначе оно не будет отображаться.

Я получал эту ошибку в мобильном сафари при использовании ASP.NET MVC для возврата FileResult с перегрузкой, которая возвращает файл с именем файла, отличным от исходного. Так,

return File(returnFilePath, contentType, fileName);

выдаст ошибку в мобильном сафари, где как

return File(returnFilePath, contentType);

не будет.

Я даже не помню, почему я думал, что то, что я делал, было хорошей идеей. Я пытаюсь быть умным.

Другие вопросы по тегам