Interne Navigation abgelehnt: in Cordova auf iOS

Lesezeit: 4 Minuten

Benutzer-Avatar
Ravi Ranjan Singh

Ich habe eine iOS-App mit Cordova erstellt. Die App versucht, eine Webseite zu laden, z http://yourdomain.example/home in index.html. Aber die Seite bleibt weiß leer mit dem Fehler in der Konsole „Interne Navigation abgelehnt – <allow-navigation> nicht angesetzt URL='http://yourdomain.example/home'".

habe ich schon eingestellt <access origin="http://yourdomain.example/home" subdomains="true" /> und auch durch Einstellung versucht <allow-navigation> Schild. Aber die Seite bleibt leer. vermisse ich noch etwas? Bitte führen.

Nach dem Hinzufügen des folgenden Meta-Tags in index.htmlder “interne Navigationsfehler” ist verschwunden, aber die Seite ist immer noch weiß und leer.

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

Benutzer-Avatar
Tom Kincaid

Ich hatte dieses Problem und es stellte sich heraus, dass es zwei config.xml-Dateien gibt. Der erste ist in Xcode, aber Sie müssen den zweiten aus dem Dateisystem bearbeiten.

AppName/config.xml

AppName/platforms/ios/AppName/config.xml

Ich fügte hinzu

<allow-navigation href="https://stackoverflow.com/questions/36234957/*" /> 

bei beiden und es hat funktioniert. Verwendung von 6.3.0.

  • Diese Antwort ist nicht richtig, Sie müssen nur die Root-config.xml ändern. Wenn Sie dann eine Cordova-Datei vorbereiten, erstellen oder ausführen, wird sie in die andere config.xml kopiert

    – jcesarmobile

    15. September 2016 um 9:53 Uhr

  • Ich verwende Cordova Prepare nicht, ich öffne das Projekt in Xcode, weil ich Anpassungen vorgenommen habe.

    – Tom Kincaid

    6. Oktober 2016 um 16:10 Uhr

  • Tom Kincaids Antwort hat bei mir perfekt funktioniert! Aus irgendeinem Grund entfernt Cordove die Zeile aus AppName/platforms/ios/AppName/config.xml nach jedem Build, obwohl ich sie zu AppName/config.xml hinzugefügt habe. Es sieht also so aus, als müsste ich diese Zeile nach jedem Build manuell hinzufügen

    – Lippai Zoltan

    1. Februar 2017 um 9:32 Uhr


Benutzer-Avatar
jcesarmobile

Sie müssen diese Zeile zu Ihrer hinzufügen config.xml

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

oder diese, wenn Sie die Navigation zu allen URLs zulassen möchten yourdomain.example

<allow-navigation href="http://yourdomain.example/*" />

  • Ich habe dies versucht, aber hat nicht funktioniert. Muss ich irgendein Plugin installieren, damit das funktioniert?

    – Ravi Ranjan Singh

    2. April 2016 um 8:50 Uhr

  • Wenn Sie Cordova-ios 4.xx verwenden, müssen Sie nichts weiter hinzufügen. Versuche es mit <allow-navigation href="*" /> und Entfernen des Content-Security-Policy-Tags

    – jcesarmobile

    2. April 2016 um 10:29 Uhr

  • Meins ist ein Cordova-Projekt. Ich habe zwei ‘config.xml’-Dateien. Einer befindet sich neben dem Ordner „www/“ und der andere im Ordner „www/“. Bei mir hat es funktioniert, wenn ich die „config.xml“ ändere, die sich außerhalb des Ordners „www/“ befindet.

    – BraveNinja

    30. Juni 2016 um 21:07 Uhr

  • Sie sollten keine config.xml im www-Ordner haben

    – jcesarmobile

    1. Juli 2016 um 5:55 Uhr

  • Siehe meine Antwort, wenn Sie Ionic verwenden: stackoverflow.com/questions/38065902/…

    – Akilan Arasu

    21. Juli 2016 um 2:54 Uhr

Danke für den Hinweis. Die Lösung

<allow-navigation href="https://stackoverflow.com/questions/36234957/about:" />

hat bei mir einen Cordova-Vorbereitungsfehler verursacht. Ich muss stattdessen Folgendes verwenden:

<allow-navigation href="https://stackoverflow.com/questions/36234957/about:*" />

Benutzer-Avatar
Asgoth

Es ist ein intern verwendetes Schema, erlauben Sie einfach den Zugriff/die Navigation darauf:

<access origin="https://stackoverflow.com/questions/36234957/about:*" />
<allow-navigation href="https://stackoverflow.com/questions/36234957/about:" />

Die Verwendung wird nicht empfohlen

<access origin="https://stackoverflow.com/questions/36234957/*" />
<allow-navigation href="https://stackoverflow.com/questions/36234957/*" />

wie beschrieben in cordova-plugin-whitelist.

Es wird nicht empfohlen, eine URL in Ihrer Basis-Webansicht zu öffnen. Verwenden Sie den cordova-plugin-inappbrowser und rufen Sie den inappbrowser auf, um die äußere URL zu öffnen:

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

  • Einige Verwendungen von Iframes lösen die Sicherheitseinschränkung „interne Navigation“ aus. Daher muss dies möglicherweise sogar von einem gut erzogenen SPA aktiviert werden.

    – mpoisot

    20. Mai 2016 um 21:44 Uhr

  • // ‘Hybrid’ erkennt sowohl Cordova als auch Capacitor ionicframework.com/docs/core-concepts/cross-platform // if (this.platform.is(‘hybrid’)) { }

    – vr_driver

    15. Februar 2021 um 13:22 Uhr


  • Einige Verwendungen von Iframes lösen die Sicherheitseinschränkung „interne Navigation“ aus. Daher muss dies möglicherweise sogar von einem gut erzogenen SPA aktiviert werden.

    – mpoisot

    20. Mai 2016 um 21:44 Uhr

  • // ‘Hybrid’ erkennt sowohl Cordova als auch Capacitor ionicframework.com/docs/core-concepts/cross-platform // if (this.platform.is(‘hybrid’)) { }

    – vr_driver

    15. Februar 2021 um 13:22 Uhr


1227360cookie-checkInterne Navigation abgelehnt: in Cordova auf iOS

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy