SecurityError: операция небезопасна - window.history.pushState()
Я получаю эту ошибку в Firefox Console: SecurityError: The operation is insecure
, а виновная - это функция HTML5: window.history.pushState()
, когда я пытаюсь загрузить что-то с помощью AJAX. Предполагается загрузить некоторые данные, но Javascript перестает выполняться при ошибке.
Мне интересно, почему это может произойти. Это некорректная конфигурация сервера? Любая помощь будет оценена.
UPDATE: Да, это была ошибка сервера с недопустимым именем домена: http://en.wikipedia.org/wiki/Same-origin_policy
Ответы
Ответ 1
Убедитесь, что вы следуете Одинаковая политика происхождения. Это означает тот же домен, тот же субдомен, тот же протокол (http vs https) и тот же порт.
Как pushState защищает от потенциальных подделок контента?
РЕДАКТИРОВАТЬ. Как отметил в своем комментарии @robertc, некоторые браузеры фактически реализуют несколько разные политики безопасности, когда источник file:///
. Не говоря уже о том, что вы можете столкнуться с проблемами при локальном тестировании с file:///
, когда страница ожидает, что она запущена из другого источника (и поэтому ваш pushState
предполагает сценарии происхождения производства, а не сценарии localhost)
Ответ 2
В моем случае мне не хватало "www". от url я толкал. Это должно быть точное совпадение, если вы работаете над www.test.com
, вы должны нажать www.test.com
, а не test.com
Ответ 3
Не пытайтесь открыть файл с помощью метода folder-explorer (т.е. file://
), но откройте этот файл из http://
(т.е. http://yoursite.com/
из http://localhost/
)
Ответ 4
Мы столкнулись с SecurityError: операция небезопасна, когда пользователь отключил свои файлы cookie до посещения нашего сайта, любые последующие запросы XHR, пытающиеся использовать сеанс, явно потерпят неудачу и вызовут эту ошибку.
Ответ 5
У меня была такая же проблема, когда вы вызывали другой файл javascript из файла, не помещая javascript "физический" адрес.
Я решил это, вызвав его так же, как из html, например: "JS/archivo.js" вместо "archivo.js"