errore: Autorizzazione negata per accedere alla proprietà ‘documento’

Come posso risolvere questo messaggio in Firefox? Sto usando un Iframe che ha un tag di ancoraggio? Vorrei ottenere un riferimento a questo ancoraggio, ma sto ricevendo questo errore quando sto cercando di accedere all’ancora:

var frameWindow = document.getElementById('myIframe').contentWindow; var anchor = frameWindow.document.links[0]; //.getElementsByClassName('a'); anchor.onclick.... 

Rilassare la politica della stessa origine

In alcune circostanze, la politica di origine identica è troppo restrittiva e pone problemi a siti Web di grandi dimensioni che utilizzano più sottodomini. Ecco quattro tecniche per rilassarlo:

proprietà document.domain

Se due windows (o frame) contengono script che impostano il dominio sullo stesso valore, la politica della stessa origine viene allentata per queste due windows e ciascuna finestra può interagire con l’altra. Ad esempio, gli script cooperanti nei documenti caricati da orders.example.com e catalog.example.com potrebbero impostare le loro proprietà document.domain su “esempio.com”, rendendo così i documenti visualizzati con la stessa origine e consentendo a ciascun documento di leggere proprietà dell’altro. Questo potrebbe non funzionare sempre poiché la porta memorizzata nella rappresentazione interna può essere contrassegnata come null. In altre parole, la porta 80 di example.com diventerà la porta example.com null perché aggiorniamo document.domain . La porta null potrebbe non essere considerata come 80 (a seconda del browser) e quindi potrebbe non riuscire o avere successo a seconda del browser.

Condivisione delle risorse incrociate

La seconda tecnica per rilassare la politica della stessa origine viene standardizzata sotto il nome di Cross-Origin Resource Sharing. Questo standard di bozza estende HTTP con una nuova intestazione di richiesta Origin e una nuova intestazione di risposta Access-Control-Allow-Origin . Consente ai server di utilizzare un’intestazione per elencare esplicitamente le origini che potrebbero richiedere un file o utilizzare un carattere jolly e consentire a un sito di essere richiesto da qualsiasi sito. Browser come Firefox 3.5 e Safari 4 utilizzano questa nuova intestazione per consentire le richieste HTTP di origine incrociata con XMLHttpRequest che altrimenti sarebbero state vietate dalla politica della stessa origine. [7]

Messaggistica tra documenti

Un’altra nuova tecnica, la messaggistica tra documenti consente a uno script di una pagina di passare messaggi di testo a uno script su un’altra pagina indipendentemente dalle origini dello script. Chiamando il metodo postMessage() su un object Window in modo asincrono viene generato un evento "onmessage" in quella finestra, triggersndo qualsiasi gestore di eventi definito dall’utente. Uno script in una pagina non può ancora accedere direttamente ai metodi o alle variabili nell’altra pagina, ma possono comunicare in modo sicuro attraverso questa tecnica di passaggio dei messaggi.

JSONP

JSONP consente a una pagina di ricevere dati JSON da un dominio diverso aggiungendo un elemento alla pagina che carica una risposta JSON da un dominio diverso.

La chiamata di funzione è la "P" di JSONP, il "padding" attorno al JSON puro, o secondo alcuni il "prefisso". Per convenzione, il browser fornisce il nome della funzione di callback come valore del parametro di query denominato, in genere utilizzando il nome jsonp o callback come nome del campo del parametro di query denominato, nella sua richiesta al server, ad esempio,

  

In questo esempio, il carico utile ricevuto potrebbe essere:

 parseResponse({"Name": "Foo", "Id": 1234, "Rank": 7}); 

Se l’iframe punta a un dominio diverso, otterrai questo errore. Questo è un esempio del tuo browser che impedisce lo scripting cross-site: http://en.wikipedia.org/wiki/Cross-site_scripting