【问题标题】:Phonegap Cordova - Trying to connect to public IP serverPhonegap Cordova - 尝试连接到公共 IP 服务器
【发布时间】:2016-04-04 23:40:06
【问题描述】:

我正在尝试通过我的 Android 手机上的应用程序登录我的 node.js 服务器。这个程序在我运行的任何地方都可以正常工作,直到我用 phonegap 编译它并在我的 android 手机上安装以进行测试。它显示“连接到服务器...”,就是这样。虽然,当我将 IP 地址写入我的安卓手机浏览器时,它连接正常。有什么我需要做的吗?如果没有,我该怎么做?

<html>
<head>
<script type="text/javascript">
function load()
{
    window.location.href = "http://192.168.1.11:8080";

}
</script>
</head>

<body onload="load()">
<h1>Connecting to Server...</h1>
</body>
</html> 

【问题讨论】:

    标签: javascript android node.js cordova server


    【解决方案1】:

    您需要一个正确的 CSP,并且可能需要在您的 config.xml 中添加一个访问源条目(取决于cordova 版本,同时拥有两者并没有什么坏处)。

    但是,您尝试执行的操作在 Cordova 环境中无法按原样工作。简短的回答是 Cordova 应用程序是一个自包含的网络应用程序,尝试通过 window.location.href 重定向/更改正文会将您带出不允许的应用程序。 (这不是 100% 的确切情况,但这是一个更长的答案)。

    要启动外部网页内容,您需要添加应用内浏览器插件并在其中打开您的网址: https://github.com/apache/cordova-plugin-inappbrowser

    【讨论】:

      【解决方案2】:

      您是否为其启用了访问远程服务器的权限?如果不是,那么本地浏览器安全策略可能会阻止它。

      检查您的 HTML 中是否有 Content-Security-Policy 元标记,并将您的远程域添加到其中。

      <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: http://192.168.1.11:8080 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
      

      【讨论】:

      • 抱歉,我是 cordova 的新手,我该怎么做?
      • 添加了可能的元建议 - 这对我有用(显然我使用了不同的 URL :))
      • 我把标签放在html头中,重新编译。没有区别:(
      • 出于兴趣,您想达到什么目的?也许还有另一种方法。通常,应用负责显示数据而不是显示远程页面,这实际上意味着您要离开应用。
      • 该标签实际上使它停止工作并在任何地方保持“连接到服务器...” o_O
      猜你喜欢
      • 2017-10-07
      • 1970-01-01
      • 2015-04-27
      • 2021-05-18
      • 2018-12-13
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      相关资源
      最近更新 更多