Uncaught Error: SECURITY error: DOM Exception 18, когда я пытаюсь установить файл cookie
Я получаю следующую ошибку в окне инструментов разработчика Chrome, когда я пытаюсь установить куки с помощьюэтого плагина jQuery:
Ошибка Uncaught: SECURITY_ERR: DOM Exception 18
Что означает эта ошибка и как ее исправить? Я получаю ту же ошибку, когда используюЭтот jQuery плагин.
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-files
(сs
в конце), но разрешен только один экземпляр 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);
Не будет.
Я даже не помню, почему я думал, что то, что я делал, было хорошей идеей. Наверное, пытается быть умным.