【问题标题】:Internal navigation rejected: <allow-navigation not set> in Cordova on iOS内部导航被拒绝:iOS 上 Cordova 中的 <allow-navigation not set>
【发布时间】:2016-07-14 02:18:09
【问题描述】:

我使用 Cordova 构建了一个 iOS 应用程序。该应用程序尝试加载网页,例如http://yourdomain.com/home 在 index.html 中。但是,页面保持白色空白,控制台中出现错误“内部导航被拒绝 - 未设置 url='http://yourdomain.com/home'”。

我已经设置了&lt;access origin="http://yourdomain.com/home" subdomains="true" /&gt;,也尝试设置&lt;allow-navigation&gt;标签。但是页面保持空白。我还缺少什么吗?请指导。

在index.html中添加如下meta标签后,“内部导航错误”消失了,但是页面还是白白的。 :(

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

【问题讨论】:

    标签: ios cordova web webpage cordova-plugins


    【解决方案1】:

    我遇到了这个问题,结果发现有两个 config.xml 文件。第一个在 Xcode 中,但您必须从文件系统中编辑第二个。

    AppName/config.xml
    
    AppName/platforms/ios/AppName/config.xml
    

    我加了

    <allow-navigation href="*" /> 
    

    对他们俩来说,它确实有效。使用 6.3.0。

    【讨论】:

    • 这个答案不对,你只需要修改根config.xml,然后当你做cordova准备、构建或运行时,它会被复制到另一个config.xml
    • 我不使用cordova prepare,我在Xcode中打开项目,因为我已经进行了自定义。
    • Tom Kincaids 的回答非常适合我!由于某种原因,cordove 在非常构建之后从 AppName/platforms/ios/AppName/config.xml 中删除了该行,即使我将它添加到 AppName/config.xml 中也是如此。所以看起来我必须在每次构建后手动添加这一行
    【解决方案2】:

    您必须将此行添加到您的 config.xml 中

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

    如果你想允许导航到 yourdomain.com 上的所有 url,或者这个

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

    【讨论】:

    • 我试过这个,但是没有用。我需要安装一些插件才能使用吗?
    • 如果您使用cordova-ios 4.x.x,则无需添加任何其他内容。尝试使用 &lt;allow-navigation href="*" /&gt; 并删除 Content-Security-Policy 标签
    • 我的是一个 Cordova 项目。我有两个“config.xml”文件。一个在“www/”文件夹旁边,另一个在“www/”文件夹内。如果我更改“www/”文件夹之外的“config.xml”,它对我有用。
    • 你不应该在 www 文件夹中有 config.xml
    • 如果您使用 Ionic,请参考我的回答:stackoverflow.com/questions/38065902/…
    【解决方案3】:

    感谢指点。解决办法

    <allow-navigation href="about:" />
    

    导致我的科尔多瓦准备错误。我需要改用以下内容:

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

    【讨论】:

      【解决方案4】:

      这是一个内部使用的方案,只允许访问/导航到它:

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

      不建议使用

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

      cordova-plugin-whitelist 中所述。

      【讨论】:

        【解决方案5】:

        不建议在基本 Web 视图中打开 url。使用cordova-plugin-inappbrowser并调用inappbrowser打开外url:

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

        【讨论】:

        • 某些 iframe 的使用会触发“内部导航”安全限制。因此,即使是表现良好的 SPA 也可能需要启用此功能。
        • // 'hybrid' 同时检测 Cordova 和 Capacitor ionicframework.com/docs/core-concepts/cross-platform // if (this.platform.is('hybrid')) { }
        猜你喜欢
        • 2020-04-04
        • 2018-07-26
        • 1970-01-01
        • 2020-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-10
        • 2023-03-10
        相关资源
        最近更新 更多