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