PhoneGap"无法加载资源:服务器响应状态为404(未找到)"

Tal*_*ula 2 permissions cordova

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

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

我的完整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>
Run Code Online (Sandbox Code Playgroud)

我在这里看到的问题似乎是相关的,他们提到问题可能与我的html cordova-whitelist-plugin中添加Content-Security-Policymeta指令有关,但我无法弄清楚如何做到这一点.

编辑:以下是我得到的一些404.这些URL在Web版本中运行良好.

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

Jes*_*650 5

@Talula,可能是你没有为你的phonegap编译器设置版本.这是你需要知道的.

Cordova/Phonegap新手开发人员的热门话题中可以获得:

  • #6 不为编译器设置"phonegap版本"
  • #7 没有为你的插件设置"版本"
  • #10 不在config.xml中添加新的"white-list"和"white-list plugin"参数.

来自Phonegap Build Forum,Petra添加:

我想补充一点:没有公告,PGB将默认的PGB版本从3.7.0更改为cli-5.2.0.这导致所有未在config.xml中设置'phonegap-version'的人面临突然需要的泼水屏幕和白名单插件以及config和html中的其他白名单规范.

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

#6

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

对我们所有人来说幸运的是,Holly Schinsky撰写了一篇精彩的博文来解释这一切:

Cordova/PhoneGap版本混乱
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/

对于#10

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

要明确的是,"白名单"已经存在了一段时间,但插件和要求是非常新的.正如您所料,当添加"白名单"时,不推荐使用事实上的开放访问功能.或者说另一种方式,事实上开放访问功能已被计划并计划被淘汰.此更改标志着删除开放访问功能的一个步骤.

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

相关链接

Phonegap Build Forum:在PGB上升级到cli-5.1.1的注释,现在需要白名单