2015-09-07 17 views
12

Il seguente problema si verifica nei dispositivi Android 4.4 e versioni successive.Errore di sicurezza con iframe

Questo è ciò che il nostro iframe assomiglia:

<iframe frameborder=0 id="myIFRAME"></iframe> 

Quello che segue è il modo in cui stiamo ottenendo iframe di programmazione:

if(document.getElementById("myIFRAME")){ 
     me.setMyIFRAME(document.getElementById("myIFRAME").contentWindow); 
} 

Questo sta causando un errore di sicurezza relative al Protocollo di mancata corrispondenza:

"Uncaught SecurityError: Blocked a frame with origin " https://www.google.com " from accessing a frame with origin "file://". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "file". Protocols must match.

Stiamo utilizzando Sencha contatto con Cordova per sviluppare il nostro progetto.

risposta

0

Si è scoperto che iframe stava caricando la pagina html che stava accedendo window.document che stava causando l'errore di protezione tra domini Sotto se la condizione fosse dentro pagina

if (window.parent.document != window.document) 

cambiamo a sotto condizione che risolve l'errore di sicurezza

if (window.parent != window) 
+0

Dove devo usare questo – Vishnu

4

Il Cordova security guide dice:

If content is served in an iframe from a whitelisted domain, that domain will have access to the native Cordova bridge.

Avete provato ad aggiungere il dominio esterno to the whitelist all'interno config.xml?

<access origin="https://google.com" /> 
+0

Ho già provato a impostare questo.Ma nessun aiuto con questo anche – Ritika

0

@Ritika,
sto prendendo un ipotesi qui, perché io non uso iframe, ma nel vostro elemento Non vedo un src. Come tale, il sistema lo sta impostando su un tipo di default e il protocollo di quella fonte è file://

Penso che se si imposta uno src=, anche uno vuoto, il problema andrà via.

Away, solo una supposizione. Buona fortuna.

+0

src viene creato dinamicamente nel codice e quindi viene impostato su iframe.Even ho provato a impostare src = '"inizialmente, ma questo non ha aiutato – Ritika

+0

Ok, girato al buio. Stai usando * white-list *, il plugin e CSP? – JesseMonroy650

+0

Ho provato a usare whie-listing, anche questo non aiuta – Ritika

0
  1. Google non è accessibile tramite iFrame.

  2. Da una pagina servita utilizzando file:// protocollo non possono accedere alle risorse oltre http:// o https:// protocollo per impostazione predefinita.