SecurityError: операция небезопасна-окно.история.pushState()

Я получаю эту ошибку в консоли Firefox:SecurityError: The operation is insecure и виновным является функция HTML5:window.history.pushState() когда я пытаюсь загрузить что-то с AJAX. Предполагается загрузить некоторые данные, но Javascript перестает выполняться при ошибке.

мне интересно, почему это могло произойти. Это какая-то неправильная конфигурация сервера? Любая помощь будет оценена.

UPDATE: Да, это была ошибка сервера с именем домена, не соответствующим: http://en.wikipedia.org/wiki/Same-origin_policy

6 ответов


убедитесь, что вы следуете Та Же Политика Происхождения. Это означает тот же домен, тот же субдомен, тот же протокол (http vs https) и тот же порт.

как pushState защищает от потенциальных подделок контента?

EDIT: как @ robertc метко указал в своем комментарии, некоторые браузеры на самом деле реализуют немного разные политики безопасности, когда источник file:///. Не говоря уже о том, что вы можете столкнуться с проблемами при локальном тестировании с помощью file:/// когда страница ожидает, что она работает из другого источника (и поэтому ваш pushState предполагает сценарии происхождения производства, а не сценарии localhost)


на SecurityError: операция небезопасна когда пользователь отключил свои куки перед посещением нашего сайта, любые последующие запросы XHR, пытающиеся использовать сеанс, очевидно, потерпят неудачу и вызовут эту ошибку.


в моем случае я отсутствовал ' www.- по url, который я толкал. Это должно быть точное совпадение, если вы работаете на www.test.com, вы должны нажать на www.test.com, а не test.com


вы должны попытаться не открывать файл с помощью метода folder-explorer (т. е. file://), но откройте этот файл из http:// (т. е. http://yoursite.com/ С http://localhost/)


У меня была та же проблема при вызове другого файла javascript из файла без ввода "физического" адреса javascript. Я решил это, вызвав его таким же образом из html, например: "JS / archivo.js "вместо" archivo.js"


при создании PWA работник службы, используемый на сервере, отличном от https, также генерирует эту ошибку.