SecurityError: l'opération est incertaine – window.history.pushState ()

Je reçois cette erreur dans la console de Firefox: SecurityError: The operation is insecure et la fonction coupable est HTML5: window.history.pushState() lorsque j'essaie de charger quelque chose avec AJAX. Il est censé charger des données, mais Javascript arrête d'exécuter une erreur.

Je me demande pourquoi cela se produit peut-être. Est-ce que c'est une mauvaise configuration du serveur? Toute aide serait appréciée.

MISE À JOUR: Oui, c'était une erreur de serveur avec un nom de domaine qui ne correspond pas: http://en.wikipedia.org/wiki/Same-origin_policy

Assurez-vous de suivre la même politique d'origine . Cela signifie le même domaine, le même sous-domaine, le même protocole (http vs https) et le même port.

Comment PushState protège-t-il contre les éventuelles falsifications de contenu?

EDIT: Comme l'a souligné à juste titre dans son commentaire, @robertc, certains navigateurs implémentent des politiques de sécurité légèrement différentes lorsque l'origine est un file:/// . Sans oublier que vous pouvez rencontrer des problèmes lors du test local avec le file:/// lorsque la page s'attend à ce qu'il fonctionne à partir d'une origine différente (et donc votre pushState suppose des scénarios d'origine de production, pas des scénarios localhost)

Dans mon cas, j'avais manqué "www". De l'URL que je poussais. Il doit s'agir d'une correspondance exacte, si vous travaillez sur www.test.com , vous devez envoyer sur www.test.com et non sur test.com

Vous devez essayer de ne pas ouvrir le fichier avec une méthode de dossier-explorateur (c'est-à-dire file:// ), mais ouvrez ce fichier à partir de http:// (ie http://yoursite.com/ de http://localhost/ )

Nous avons expérimenté SecurityError: l'opération n'est pas sécurisée lorsqu'un utilisateur a désactivé ses cookies avant de visiter notre site, toutes les requêtes XHR suivantes essayant d'utiliser la session évidemment échoueraient et provoqueraient cette erreur.

J'ai eu le même problème quand j'ai appelé un autre fichier javascript à partir d'un fichier sans mettre l'adresse "physique" javascript. Je l'ai résolu en l'appelant de la même façon à partir de l'html, par exemple: "JS / archivo.js" au lieu de "archivo.js"