内部导航被拒绝:iOS上的Cordova中的<allow-navigation not set>

Rav*_*ngh 36 webpage ios web cordova cordova-plugins

我使用Cordova构建了一个iOS应用程序.该应用程序尝试在index.html中加载网页,例如http://yourdomain.com/home.但是,该页面在控制台"内部导航被拒绝 - <allow-navigation>未设置为url =' http://yourdomain.com/home '" 时出现错误并且出现错误.

我已经设置<access origin="http://yourdomain.com/home" subdomains="true" />并尝试设置<allow-navigation>标签.但页面保持空白.我错过了什么吗?请指导.

在index.html中添加以下元标记后,"内部导航错误"已经消失,但页面仍为空白.:(

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script src: 'self' 'unsafe-inline' 'unsafe-eval'">
Run Code Online (Sandbox Code Playgroud)

Tom*_*aid 67

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

AppName/config.xml

AppName/platforms/ios/AppName/config.xml
Run Code Online (Sandbox Code Playgroud)

我补充道

<allow-navigation href="*" /> 
Run Code Online (Sandbox Code Playgroud)

对他们两个都有效.使用6.3.0.

  • 这个答案不对,你只需要修改root config.xml,然后当你做一个cordova准备,构建或运行它时会被复制到另一个config.xml (12认同)

jce*_*ile 24

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

<allow-navigation href="http://yourdomain.com/home" />
Run Code Online (Sandbox Code Playgroud)

或者,如果您想允许导航到yourdomain.com上的所有网址

<allow-navigation href="http://yourdomain.com/*" />
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用cordova-ios 4.xx,则无需添加任何其他内容.尝试使用`<allow-navigation href ="*"/>`并删除Content-Security-Policy标记 (4认同)

asg*_*oth 6

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

<access origin="about:*" />
<allow-navigation href="about:" />
Run Code Online (Sandbox Code Playgroud)

不建议使用

<access origin="*" />
<allow-navigation href="*" />
Run Code Online (Sandbox Code Playgroud)

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');
    }
}
Run Code Online (Sandbox Code Playgroud)

  • iframe的某些使用会触发"内部导航"安全限制.因此,即使是表现良好的SPA也可能需要启用此功能. (2认同)

小智 5

感谢您的指导。解决方案

<allow-navigation href="about:" />
Run Code Online (Sandbox Code Playgroud)

给我造成了科尔多瓦准备错误。我需要改用以下内容:

<allow-navigation href="about:*" />
Run Code Online (Sandbox Code Playgroud)