【问题标题】:Apache Cordova: Failed to load resource: the server responded with a status of 404 (Not Found)Apache Cordova:加载资源失败:服务器响应状态为 404(未找到)
【发布时间】:2016-04-14 03:03:03
【问题描述】:

当我在 Android 模拟器或我的 Android 设备上运行我的应用程序时,我在所有 AJAX 请求上都收到以下错误:

Failed to load resource: the server responded with a status of 404 (Not Found)

我已经尝试了以下所有步骤来解决这个问题,但它仍然存在。

  • 使用 npm 将白名单插件安装到项目中。
  • 已将<plugin name="cordova-plugin-whitelist" version="1" /> 添加到 config.xml。
  • 已添加<uses-permission android:name="android.permission.INTERNET" /> 到platforms\android\AndroidManifest.xml。
  • 在 www/index.html 文件的 <head> 中添加了 <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline';"><meta http-equiv="X-XSS-Protection" content="0">
  • 添加了<access origin="*" /><allow-navigation href="*" /><allow-intent href="*" /> 到 config.xml 文件。

不管我仍然遇到同样的错误。有什么想法吗?

项目编译良好。我在 Windows 7 上,使用 Cordova 5.4.0、Android 5.1.1

【问题讨论】:

    标签: android apache cordova xss


    【解决方案1】:

    删除应用程序的整个 Android 部分:

    cordova platform remove android
    

    然后再次添加:

    cordova platform add android
    

    解决了这个问题,这对我来说仍然是个谜。

    也许早期版本的 Cordova 存在一些问题,与当前的 Cordova 版本不兼容。

    【讨论】:

    • 这不适用于 cordova 8.1.2 并且在 AVD Android 8.0 上也有同样的问题
    • 很遗憾,这不是根本原因,并非在所有情况下都有效。
    【解决方案2】:

    我认为问题出在您的内容安全策略元标记上 - 尝试将 * 添加到 default-src 以向任何地方打开 Ajax 请求。您还可以专门为 Ajax 请求添加一个 connect-src 子句,并列出您希望能够访问的主机和协议。例如:

    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://myhost.mydomain.com">
    

    允许向http://myhost.mydomain.com发送Ajax请求

    我写了一篇关于这个主题的博文,您可能会觉得有帮助,可以是read here

    【讨论】:

    • 很抱歉,我不小心从我的 Content-Security-Policy 标记中删除了 * 通配符,它​​实际上已包含在内,并且我编辑了我的问题。所以这并不能解决问题。我尝试了您的 Content-Security-Policy 元以将请求限制为仅一个域名,但我仍然得到:404 (Not Found) 但是,对于 Content-Security-Policy 现在实际上不允许的其他域,我得到:Refused to load the script because it violates the following Content Security Policy...因此,404 错误可能是由 Content-Security-Policy 以外的其他原因引起的。如何调查更多?
    • 我会尝试使用 Chrome remote debugger tools 并查找任何 JavaScript 控制台错误,以及尝试 Ajax 调用时网络选项卡上发生的情况。这可能会更清楚地说明问题。
    【解决方案3】:

    更新安卓

    cordova platform update android@5.1.1
    

    我在连接到服务器上的 php 页面时遇到问题,我对 android 进行了更新

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 1970-01-01
      • 2015-12-01
      • 2018-08-09
      相关资源
      最近更新 更多