Неприхована помилка: SECURITY_ERR: DOM Виняток 18, коли я намагаюся встановити файл cookie


121

Я отримую таку помилку у вікні інструментів для розробників Chrome, коли намагаюся встановити файл cookie за допомогою цього плагіна jQuery:

Невиконана помилка: SECURITY_ERR: DOM Виняток 18

Що означає ця помилка та як її виправити? Я отримую таку ж помилку, коли використовую цей плагін jQuery.


Якщо ваша проблема пов’язана з полотном. Це відповідь stackoverflow.com/questions/2390232 / ...
jose920405

Відповіді:


151

Ви, швидше за все, використовуєте це в локальному файлі через file://схему URI, в якій не можна встановити файли cookie. Помістіть його на локальний сервер, щоб ви могли користуватися http://localhost.


26
Також трапилося зі мною, що використовує getImageData () на полотні, коли завантажується з файлу: //.
Timmmm

6
Хороший дзвінок, також відбувається під час виклику getImageData () для зображення, завантаженого з іншого хоста. Переміщення файлу до одного домену / протоколу / тощо. виправляє це.
Майк Клагг

28
Порада: якщо у вас встановлений Python, просто введіть python -m SimpleHTTPServerу кореневий каталог свого веб-сайту та знайдіть його на сайті localhost: 8000 .
Томас

5
Для Python 3, щоб отримати той самий ефект, який вам потрібно зробитиpython -m http.server 8000
Kat

2
Якщо ви розробник iOS, можливо, вам буде цікаво знати, що я також зазнав цієї проблеми під час спроби використання localStorage після завантаження HTML безпосередньо в елемент управління UIWebView. stackoverflow.com/questions/11371441/…
Феліпе Сабіно

18

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


4
Коли ви використовуєте --allow-file-access-from-files (зауважте, що це тепер множина), ви повинні пам’ятати, що комутатор набуває чинності лише в тому випадку, коли інші інстанції Chrome вже не працюють.
BlueMonkMN

11

Ви також можете "виправити" це, замінивши зображення його вбудованим Base64-представленням:

img.src= "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
Корисно, коли ви не маєте наміру публікувати сторінку в Інтернеті, а натомість використовуєте її лише на локальних машинах.


4
Будь-яка ідея, як скласти базове представлення полотна таким чином, щоб воно не кидало цю помилку?
devios1

var canvas = document.createElement ("полотно"); canvas.width = 128; полотно.висота = 128; var ctx = canvas.getContext ('2d'); ctx.fillRect (25,25,100,100); ctx.clearRect (45,45,60,60); ctx.strokeRect (50,50,50,50); повернути ctx.getImageData (0, 0, 128, 128);
Рей Хулха

10

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

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

До речі, у Firefox такого питання немає.


Я б хотів, щоб я міг подати заявку не раз. Твоя відповідь щойно врятувала мене ТОЛИ часу удару головою об екран !! Багато, велике спасибі !!
Хайме

@Jaime моє задоволення;)
Endre Simo


4

У мене виникла ця проблема при використанні API історії.

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

Навіть із локальним сервером (localhost) ви хочете додати "http: //" до своєї URL-адреси, щоб у вас було щось подібне до:

http://localhost...

3

Я не був повністю задоволений --allow-file-access-from-filesрішенням, тому що я використовую Chrome як основний браузер, і не дуже задоволений цим порушенням, яке я відкрив.

Зараз я використовую Canary (хромовану бета-версію) для своєї розробки з увімкненим прапором. І сама версія Chrome для мого реального ведення блогів: два браузера не поділяють прапор!


1
Для тих, хто цікавить вас, зараз
дозволити

2

Ви також можете отримати цю помилку, якщо скористатися новою (поки що лише веб-програмою) функцією сповіщення до отримання дозволу.

Перший запуск:

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

Пізніше запустіть:

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

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


1

Я отримував цю помилку в мобільному сафарі при використанні ASP.NET MVC для повернення FileResult з перевантаженням, що повертає файл з іншим ім'ям файлу, ніж оригінал. Так,

return File(returnFilePath, contentType, fileName);

дав би помилку в мобільному сафарі, де як

return File(returnFilePath, contentType);

не хотів би.

Навіть не пам’ятаю, чому я вважав, що я роблю, це гарна ідея. Намагаюся бути розумним, я здогадуюсь.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.