SecurityError: The operation is insecure - window.history.pushState()
Asked Answered
A

11

79

I'm getting this error in Firefox's Console: SecurityError: The operation is insecure and the guilty is HTML5 feature: window.history.pushState() when I try to load something with AJAX. It is supposed to load some data but Javascript stops executing on error.

I'm wondering why this may be happening. Is this some server misconfiguration? Any help would be appreciated.

UPDATE: Yes, it was a server error with domain name not matching: http://en.wikipedia.org/wiki/Same-origin_policy

Adactylous answered 12/11, 2012 at 17:49 Comment(2)
Are you accessing on a file:/// URL?Lexi
@Lexi what do you mean? It's http:// all the time. I suspect it might be because of usage of sub-domain but pushState tries to push just /, so it shouldn't have any impact.Adactylous
F
51

Make sure you are following the Same Origin Policy. This means same domain, same subdomain, same protocol (http vs https) and same port.

How does pushState protect against potential content forgeries?

EDIT: As @robertc aptly pointed out in his comment, some browsers actually implement slightly different security policies when the origin is file:///. Not to mention you can encounter problems when testing locally with file:/// when the page expects it is running from a different origin (and so your pushState assumes production origin scenarios, not localhost scenarios)

Frye answered 12/11, 2012 at 17:52 Comment(2)
how to use pushState with file:/// then?Forbade
@SashkoLykhenko You don't. In general, browsers apply tighter security restrictions to file:// URI. Browsers treat file:// URI as though they come from unique origins even if the files they reference are on the same system. So anything that requires a cross-origin check fails when used in conjunction with file:// URI.Wreath
T
16

We experienced the SecurityError: The operation is insecure when a user disabled their cookies prior to visiting our site, any subsequent XHR requests trying to use the session would obviously fail and cause this error.

Tricostate answered 12/2, 2016 at 7:28 Comment(1)
When a user disables their cookies, you can wrap XHR request code in a try/catch block and use the catch to prompt the user to enable cookies. Wrap window.localStorage, window.history.pushState() or any XHR requests.Alternation
S
5

In my case I was missing 'www.' from the url I was pushing. It must be exact match, if you're working on www.test.com, you must push to www.test.com and not test.com

Showpiece answered 22/12, 2013 at 18:33 Comment(0)
A
5

You should try not open the file with a folder-explorer method (i.e. file://), but open that file from http:// (i.e. http://yoursite.com/ from http://localhost/)

Avlona answered 4/6, 2014 at 16:10 Comment(0)
R
4

I had this problem on ReactJS history push, turned out i was trying to open //link (with double slashes)

Riccio answered 18/11, 2020 at 23:12 Comment(0)
C
2

I had the same problem when called another javascript file from a file without putting javascript "physical" address. I solved it by calling it same way from the html, example: "JS / archivo.js" instead of "archivo.js"

Cistaceous answered 19/2, 2015 at 17:27 Comment(0)
A
2

When creating a PWA, a service worker used on an non https server also generates this error.

Aguilar answered 12/6, 2018 at 6:38 Comment(0)
G
1

replace serviceWorker.unregister() to serviceWorker.register() in index.js file

Gens answered 30/12, 2019 at 17:31 Comment(0)
C
1

I solved it by switching tohttp protocol from the file protocol.

  • you can use "live-server" extension in VS code,
  • or, on node, use live-server [dirPath]
Crime answered 22/10, 2020 at 8:16 Comment(0)
M
1

I had the same problem and it was caused by setting <base href=> to a naked domain while my server always served the www domain. Adding the www to the url in base href solved the issue.

Martini answered 12/3, 2021 at 8:20 Comment(0)
T
1

You should disable blocking of cross sire cookies in security settings of browser.

Thespian answered 31/7, 2023 at 18:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.