2016-03-26 26 views
28

Ho costruito un'app iOS utilizzando Cordova. L'app tenta di caricare una pagina Web, ad es. http://yourdomain.com/home in index.html. Tuttavia, la pagina rimane bianca vuota con errore nella console "Navigazione interna rifiutata - < allow-navigation> non impostata per url = 'http://yourdomain.com/home'".Navigazione interna rifiutata: <allow-navigation not set> in Cordova su iOS

Ho già impostato <access origin="http://yourdomain.com/home" subdomains="true" /> e ho anche provato impostando il tag <allow-navigation>. Ma la pagina rimane vuota. mi manca qualcos'altro? Per favore guida.

Dopo aver aggiunto il seguente meta tag in index.html, "errore di navigazione interno" è andato, ma la pagina è ancora bianca vuota. :(

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script src: 'self' 'unsafe-inline' 'unsafe-eval'"> 

risposta

41

Stavo avendo questo problema e risulta che ci sono due file config.xml. Il primo è in Xcode, ma devi modificare il secondo dal filesystem.

AppName/config.xml 

AppName/platforms/ios/AppName/config.xml 

ho aggiunto

<allow-navigation href="*" /> 

ad entrambi e ha funzionato. Utilizzando la versione 6.3.0.

+8

Questa risposta non è corretta, devi modificare solo il file config.xml di root, quindi quando esegui una cordova, prepara, esegui o esegui verrà copiato nell'altra configurazione.xml – jcesarmobile

+1

Non uso cordova prepare, apro il progetto in Xcode perché ho fatto personalizzazioni. –

+1

La risposta di Tom Kincaids ha funzionato perfettamente per me! Per qualche ragione cordove rimuove la linea da AppName/platform/ios/AppName/config.xml dopo molto build, anche se l'ho aggiunta ad AppName/config.xml. Quindi sembra che devo aggiungere manualmente questa linea dopo ogni build –

24

È necessario aggiungere questa riga al vostro config.xml

<allow-navigation href="http://yourdomain.com/home" /> 

o questo se si desidera consentire la navigazione a tutti gli URL in yourdomain.com

<allow-navigation href="http://yourdomain.com/*" /> 
+0

Ho provato questo, ma non ha funzionato. Devo installare qualche plugin per farlo funzionare? –

+4

Se si utilizza cordova-ios 4.x.x non è necessario aggiungere altro. Prova con '' e rimuovendo il tag Content-Security-Policy – jcesarmobile

+0

Il mio è un progetto Cordova. Ho due file 'config.xml'. Uno nella cartella 'www /' e l'altro nella cartella 'www /'. Ha funzionato per me se cambio il "config.xml" che si trova all'esterno della cartella "www /". – BraveNinja

5

Non è consigliabile aprire un url nella vista web di base.Utilizzare il plug-in cordova-inappbrowser e chiamare l'inappbrowser per aprire l'url esterno:

function open_outer_url(url){ 
    if(window.cordova && window.cordova.InAppBrowser){ 
     window.cordova.InAppBrowser.open(url, "_blank", 'location=no'); 
    }else{ 
     window.open(url,'_blank'); 
    } 
} 
+2

Alcuni usi degli iframe trigger la restrizione di sicurezza "navigazione interna". Quindi anche una SPA ben educata potrebbe aver bisogno di abilitarlo. – mpoisot

0

Esso è uno schema utilizzato internamente, solo consentire l'accesso/navigazione ad esso:

<access origin="about:*" /> 
<allow-navigation href="about:" /> 

Non è consigliabile utilizzare

<access origin="*" /> 
<allow-navigation href="*" /> 

come descritto in cordova-plugin-whitelist.