2012-11-12 9 views
31

Ricevo questo errore nella Console di Firefox: SecurityError: The operation is insecure e il colpevole è la funzione HTML5: window.history.pushState() quando provo a caricare qualcosa con AJAX. Si suppone che carichi alcuni dati ma Javascript si blocca in caso di errore.SecurityError: l'operazione non è sicura - window.history.pushState()

Mi chiedo perché questo potrebbe accadere. Si tratta di un errore di configurazione del server? Qualsiasi aiuto sarebbe apprezzato.

UPDATE: Sì, è stato un errore del server con il nome di dominio non corrispondono: http://en.wikipedia.org/wiki/Same-origin_policy

+4

Stai accedendo a un URL 'file: ///'? – robertc

+0

@robertc cosa intendi? È 'http: //' sempre. Sospetto che potrebbe essere dovuto all'utilizzo di sottodomini ma 'pushState' tenta di spingere solo'/', quindi non dovrebbe avere alcun impatto. – Atadj

+0

Stavo solo controllando ... – robertc

risposta

27

Assicurarsi che si sta seguendo la Same Origin Policy. Ciò significa stesso dominio, stesso sottodominio, stesso protocollo (http vs https) e stessa porta.

How does pushState protect against potential content forgeries?

EDIT: Come @robertc giustamente sottolineato nel suo commento, alcuni browser attuino effettivamente leggermente diverse politiche di sicurezza quando l'origine è file:///. Per non parlare dei problemi durante il test locale con file:/// quando la pagina si aspetta provenga da un'origine diversa (e quindi il tuo pushState assume scenari di origine produttiva, non scenari localhost)

2

Nel mio caso mi mancava "www. ' dall'URL stavo spingendo. Deve essere corrispondenza esatta, se stai lavorando su www.test.com, è necessario spingere per www.test.com e non test.com

2

Si dovrebbe cercare di non aprire il file con un metodo di cartella-Explorer (IE file://), ma aprire il file da http:// (es. http://localhost/)

0

Ho avuto lo stesso problema quando ho chiamato un altro file javascript da un file senza inserire l'indirizzo "fisico" di javascript. ho risolto chiamando allo stesso modo dalla html, ad esempio: "JS/archivo.js" invece di "archivo.js"

2

abbiamo sperimentato la SecurityError: L'operazione è insicura quando un utente disabilitato i cookie prima di visitare il nostro sito, eventuali richieste XHR successive che tentano di utilizzare la sessione ovviamente falliscono e causano questo errore.

+0

come hai risolto questo problema? –