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


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

Ошибка Uncaught: SECURITY_ERR: DOM Exception 18

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

9 118

9 ответов:

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

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

Вы также можете "исправить" это, заменив изображение его встроенным представлением Base64: {[0]} Полезно, если вы не собираетесь публиковать страницу в интернете, а используете ее только на локальных компьютерах.

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

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

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

Эта ошибка появляется, если вы пытаетесь создать web worker со схемой 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#dom-worker

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

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

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

http://localhost...

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

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

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

Первый запуск:

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

Последующий запуск:

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

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

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

return File(returnFilePath, contentType, fileName);

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

return File(returnFilePath, contentType);

Не будет.

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