web-dev-qa-db-fra.com

SecurityError: l'opération n'est pas sécurisée - window.history.pushState ()

Je reçois cette erreur dans la console de Firefox: SecurityError: The operation is insecure Et le coupable est la fonctionnalité HTML5: window.history.pushState() lorsque j'essaie de charger quelque chose avec AJAX. Il est supposé charger des données, mais Javascript cesse de fonctionner en cas d'erreur.

Je me demande pourquoi cela peut se produire. Est-ce une mauvaise configuration du serveur? Toute aide serait appréciée.

UPDATE: Oui, c'était une erreur de serveur avec le nom de domaine ne correspondant pas: http://en.wikipedia.org/wiki/Same-Origin_policy

47
Atadj

Assurez-vous de suivre = 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 contrefaçons de contenu potentielles?

EDIT: Comme @robertc l’a justement souligné dans son commentaire, certains navigateurs implémentent des politiques de sécurité légèrement différentes lorsque l’origine est file:///. Sans oublier que vous pouvez rencontrer des problèmes lors de tests locaux avec file:/// lorsque la page s'attend à être exécutée à partir d'une origine différente (et donc votre pushState suppose des scénarios de production Origin, et non des scénarios d'hôte local)

36
Matt

Nous avons rencontré le SecurityError: l'opération n'est pas sécurisée lorsqu'un utilisateur désactivait ses cookies avant de visiter notre site, toute demande XHR ultérieure essayant d'utiliser la session échouerait évidemment et causerait cette erreur.

8
oliverguenther

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

3
T.Todua

Dans mon cas, il me manquait 'www.' de l'URL je poussais. Ce doit être la correspondance exacte, si vous travaillez sur www.test.com, vous devez appuyer sur www.test.com et pas test.com

3
Flo

J'ai eu le même problème quand appelé un autre fichier javascript à partir d'un fichier sans mettre l'adresse javascript "physique". Je l'ai résolu en l'appelant de la même manière à partir du code HTML, exemple: "JS/archivo.js" au lieu de "archivo.js"

1
hectorpyco

Lors de la création d'un PWA, un agent de service utilisé sur un serveur autre que https génère également cette erreur.

1
Dror