Подтвердить что ты не робот

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

4b9b3361

Ответ 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"