PhoneGap“加载资源失败:服务器响应状态为404(未找到)" [英] PhoneGap "Failed to load resource: the server responded with a status of 404 (Not Found)"

查看:42
本文介绍了PhoneGap“加载资源失败:服务器响应状态为404(未找到)"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 Web 应用程序,我最近尝试将其转换为 PhoneGap,但是由于某种原因,在我的 android 上运行它时,它无法访问互联网.通过 USB 使用 chrome 进行调试时,对于所有外部请求(例如从 fonts.googleapis.com 加载谷歌字体作为样式表),我看到错误加载资源失败:服务器响应状态为 404(未找到)" 在我的 html 中,并从我的 js 中调用 firebase).

I have a web application that I recently tried converting into PhoneGap, but for some reason, when running it on my android, it doesn't have access to the internet. When debugging with chrome via usb, I see the error "Failed to load resource: the server responded with a status of 404 (Not Found)" for all external requests (e.g. loading google fonts as stylesheets from fonts.googleapis.com in my html, and calling firebase from my js).

我正在使用默认的 <access origin="*"/> 指令,据我所知,它应该允许完全访问.

I'm using the default <access origin="*"/> directive, which, to my understanding, should allow full access.

我完整的config.xml如下:

<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" id="com.phonegap.helloworld" version="1.0.0">
  <name>MyApp</name>
  <description>MyDescription</description>
  <author href="http://phonegap.com" email="support@phonegap.com">PhoneGap Team</author>
  <content src="index.html"/>
  <preference name="permissions" value="none"/>
  <preference name="orientation" value="default"/>
  <preference name="target-device" value="universal"/>
  <preference name="fullscreen" value="true"/>
  <preference name="webviewbounce" value="true"/>
  <preference name="prerendered-icon" value="true"/>
  <preference name="stay-in-webview" value="false"/>
  <preference name="ios-statusbarstyle" value="black-opaque"/>
  <preference name="detect-data-types" value="true"/>
  <preference name="exit-on-suspend" value="false"/>
  <preference name="show-splash-screen-spinner" value="true"/>
  <preference name="auto-hide-splash-screen" value="true"/>
  <preference name="disable-cursor" value="false"/>
  <preference name="android-minSdkVersion" value="14"/>
  <preference name="android-installLocation" value="auto"/>
  <gap:plugin name="org.apache.cordova.battery-status" source="npm"/>
  <gap:plugin name="org.apache.cordova.camera" source="npm"/>
  <gap:plugin name="org.apache.cordova.console" source="npm"/>
  <gap:plugin name="org.apache.cordova.contacts" source="npm"/>
  <gap:plugin name="org.apache.cordova.device" source="npm"/>
  <gap:plugin name="org.apache.cordova.device-motion" source="npm"/>
  <gap:plugin name="org.apache.cordova.device-orientation" source="npm"/>
  <gap:plugin name="org.apache.cordova.dialogs" source="npm"/>
  <gap:plugin name="org.apache.cordova.file" source="npm"/>
  <gap:plugin name="org.apache.cordova.file-transfer" source="npm"/>
  <gap:plugin name="org.apache.cordova.geolocation" source="npm"/>
  <gap:plugin name="org.apache.cordova.globalization" source="npm"/>
  <gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/>
  <gap:plugin name="org.apache.cordova.media" source="npm"/>
  <gap:plugin name="org.apache.cordova.media-capture" source="npm"/>
  <gap:plugin name="org.apache.cordova.network-information" source="npm"/>
  <gap:plugin name="org.apache.cordova.splashscreen" source="npm"/>
  <gap:plugin name="org.apache.cordova.vibration" source="npm"/>
  <icon src="icon.png"/>
  <icon src="www/res/icon/android/icon-36-ldpi.png" gap:platform="android" gap:qualifier="ldpi"/>
  <icon src="www/res/icon/android/icon-48-mdpi.png" gap:platform="android" gap:qualifier="mdpi"/>
  <icon src="www/res/icon/android/icon-72-hdpi.png" gap:platform="android" gap:qualifier="hdpi"/>
  <icon src="www/res/icon/android/icon-96-xhdpi.png" gap:platform="android" gap:qualifier="xhdpi"/>
  <icon src="www/res/icon/blackberry/icon-80.png" gap:platform="blackberry"/>
  <icon src="www/res/icon/blackberry/icon-80.png" gap:platform="blackberry" gap:state="hover"/>
  <icon src="www/res/icon/ios/icon-57.png" gap:platform="ios" width="57" height="57"/>
  <icon src="www/res/icon/ios/icon-72.png" gap:platform="ios" width="72" height="72"/>
  <icon src="www/res/icon/ios/icon-57-2x.png" gap:platform="ios" width="114" height="114"/>
  <icon src="www/res/icon/ios/icon-72-2x.png" gap:platform="ios" width="144" height="144"/>
  <icon src="www/res/icon/webos/icon-64.png" gap:platform="webos"/>
  <icon src="www/res/icon/windows-phone/icon-48.png" gap:platform="winphone"/>
  <icon src="www/res/icon/windows-phone/icon-173-tile.png" gap:platform="winphone" gap:role="background"/>
  <gap:splash src="www/res/screen/android/screen-ldpi-portrait.png" gap:platform="android" gap:qualifier="port-ldpi"/>
  <gap:splash src="www/res/screen/android/screen-mdpi-portrait.png" gap:platform="android" gap:qualifier="port-mdpi"/>
  <gap:splash src="www/res/screen/android/screen-hdpi-portrait.png" gap:platform="android" gap:qualifier="port-hdpi"/>
  <gap:splash src="www/res/screen/android/screen-xhdpi-portrait.png" gap:platform="android" gap:qualifier="port-xhdpi"/>
  <gap:splash src="www/res/screen/blackberry/screen-225.png" gap:platform="blackberry"/>
  <gap:splash src="www/res/screen/ios/screen-iphone-portrait.png" gap:platform="ios" width="320" height="480"/>
  <gap:splash src="www/res/screen/ios/screen-iphone-portrait-2x.png" gap:platform="ios" width="640" height="960"/>
  <gap:splash src="www/res/screen/ios/screen-iphone-portrait-568h-2x.png" gap:platform="ios" width="640" height="1136"/>
  <gap:splash src="www/res/screen/ios/screen-ipad-portrait.png" gap:platform="ios" width="768" height="1024"/>
  <gap:splash src="www/res/screen/ios/screen-ipad-landscape.png" gap:platform="ios" width="1024" height="768"/>
  <gap:splash src="www/res/screen/windows-phone/screen-portrait.jpg" gap:platform="winphone"/>
  <access origin="*"/>
  <access uri="https://*.firebaseio.com" subdomains="true"/>
  <plugin name="cordova-plugin-whitelist" version="1"/>
  <allow-intent href="http://*/*"/>
  <allow-intent href="https://*/*"/>
  <allow-intent href="tel:*"/>
  <allow-intent href="sms:*"/>
  <allow-intent href="mailto:*"/>
  <allow-intent href="geo:*"/>
  <platform name="android">
    <allow-intent href="market:*"/>
  </platform>
  <platform name="ios">
    <allow-intent href="itms:*"/>
    <allow-intent href="itms-apps:*"/>
  </platform>
</widget>

我在这里查看了似乎相关的问题,他们提到问题可能与 cordova-whitelist-plugin 和添加 Content-Security-我的 html 中的 Policy 元指令可以提供帮助,但我不知道该怎么做.

I was looking at questions here which appear to be related, and they mentioned that the problem might have to do with the cordova-whitelist-plugin and that adding a Content-Security-Policy meta directive in my html could help, but I couldn't figure out how to do that.

这是我收到的一些 404.这些网址在网络版本中运行良好.

Here are some of the 404s I'm getting. The URLs work well from web version.

http://fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light,bolditalic,black,medium Failed to load resource: the server responded with a status of 404 (Not Found)
https://fonts.googleapis.com/css?family=Quicksand:300,400,700 Failed to load resource: the server responded with a status of 404 (Not Found)
http://fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light,bolditalic,black,medium Failed to load resource: the server responded with a status of 404 (Not Found)
http://debug1.build.phonegap.com/target/target-script-min.js#15bded38-647a-11e5-95fa-22000b96d1a7 Failed to load resource: the server responded with a status of 404 (Not Found)

推荐答案

可能是您没有为您的 phonegap 编译器设置版本.这是您需要了解的内容.

It could be you do not have the version set for your phonegap compiler. Here is what you need to know.

来自 Cordova 新手开发人员犯的主要错误/Phonegap 你点击了:

  • #6 未设置phonegap 版本";为您的编译器
  • #7 未设置版本";给你的插件
  • #10 不添加新的白名单";和白名单插件"config.xml 中的参数.

来自 Phonegap Build 论坛,Petra 添加:

我想补充一点:PGB 将默认的 PGB 版本从 3.7.0 更改为 cli-5.2.0,在没有公告的情况下.这导致所有没有在 config.xml 中设置 'phonegap-version' 的人都面临着突然需要启动画面和白名单插件以及 config 和 html 中的额外白名单规范.

I would add: without announcement, PGB changed the default PGB-version from 3.7.0 to cli-5.2.0. This causes all those who have not set 'phonegap-version' in config.xml to be confronted with the sudden need of splashscreen and whitelist plugins and additional whitelisting specifications in config and html.

此外,一些插件似乎无法使用 cli-5.2.0 正确构建,从而导致有关Class ***.java"的日志文件错误消息.

Also, several plugins seem not to build correctly with cli-5.2.0, causing log file error messages about "Class ***.java".

对于#6 &#7

For #6 & #7

使用 CLI 版本,如果您没有为您的平台分配版本,或者在Phonegap Build"中,如果您没有在 config.xml 中设置 phonegap-version,您将获得最新版本.如果幸运的话,您的程序会按预期运行.如果你不走运,你会得到一组级联错误.

With the CLI version, if you do not assign a version for your platform OR in ''Phonegap Build'' if you do not set the phonegap-version in config.xml, YOU WILL GET THE LATEST VERSION. If you are lucky, your program just works as expected. If you are not lucky, you'll get a set of cascading error.

幸运的是,Holly Schinsky 写了一篇很好的博文来解释这一切:

Luckily for all of us, Holly Schinsky has written a nice blog post to explain it all:

Cordova/PhoneGap 版本混淆
http://devgirl.org/2014/11/07/cordovaphonegap-version-困惑/

对于#10

这个相对*新*的要求意味着什么?要访问网络上的任何网站或资源,您必须使用白名单和白名单插件.如果您使用的是cordova-android@4.0.0 或更高版本,则此要求会生效;包括 cli-5.1.1.但是,如果您的版本在 4.0.0 之前,比如使用 3.5.0 或 3.7.0,那么您将不必添加白名单要求.

This relatively * NEW * requirement means ? to access ANY website or resources on the web, you MUST use the whitelist and the whitelist plugin. This requirement goes into affect if you are using cordova-android@4.0.0 or better; including cli-5.1.1. If however, your version is before 4.0.0, let use say 3.5.0 or 3.7.0, then you will not have to add the white-list requirement.

明确地说,白名单"已经存在一段时间了,但是插件和要求是非常新的.正如您所料,当白名单"出现时添加了,事实上的开放访问功能已被弃用.或者换句话说,事实上的开放访问功能已计划并计划被淘汰.此更改标志着移除开放获取功能的一步.

To be clear, the "whitelist" has been around for a bit, but the plugin and requirement is very new. As you would expect, when the "whitelist" was added, the defacto open-access feature was deprecated. Or said another way, the defacto open-access feature was planned and scheduled to be eliminated. This change marks a step in removal of the open-access feature.

此外,内容安全政策 (CSP) 已经吸引了众多开发者 - 因为它的宣传很差.这个 CSP 需要进入你使用的每一个 HTML 页面,就像你必须等待deviceready"一样.该文档隐藏在许多最新文档页面的底部.

In addition, the Content Security Policy (CSP) has caught numerous developers - because it was soooo poorly publicized. This CSP needs to go in every single HTML page you used, just like you have to wait for 'deviceready'. The documentation is buried in the bottom of many of the latest documentation pages.

相关链接

Phonegap 构建论坛:在 PGB 上升级到 cli-5.1.1 的注意事项 现在需要白名单

Phonegap Build Forum: Notes for upgrading to cli-5.1.1 on PGB and now required Whitelist

这篇关于PhoneGap“加载资源失败:服务器响应状态为404(未找到)"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆