cordova - plugin - PhoneGap "Error al cargar el recurso: el servidor respondió con un estado de 404(No encontrado)"
ionic location permission (3)
@Talula, podría ser que no tenga la versión establecida para su compilador de fajos de teléfono. Aquí está lo que necesitas saber.
De los errores principales de los desarrolladores nuevos en Cordova / Phonegap que ha golpeado:
- # 6 No configura la "versión de phonegap" para su compilador
- # 7 No configurando "versión" para tus complementos
- # 10 No agrega los nuevos parámetros de "lista blanca" y "complemento de lista blanca" en config.xml.
Desde el Foro de construcción de Phonegap , Petra agrega :
Yo agregaría: sin anuncio, PGB cambió la versión PGB predeterminada de 3.7.0 a cli-5.2.0. Esto hace que todos los que no han configurado ''phonegap-version'' en config.xml se enfrenten a la necesidad repentina de complementos de pantallas y listas blancas y especificaciones adicionales de listas blancas en config y html.
Además, parece que varios plugins no se compilan correctamente con cli-5.2.0, lo que provoca mensajes de error de archivo de registro sobre "Class ***. Java".
Para # 6 y # 7
Con la versión de CLI, si no asigna una versión para su plataforma O en '''' Phonegap Build '''' si no configura la versión de phonegap en config.xml, USTED obtendrá la última versión. Si tiene suerte, su programa simplemente funciona como se esperaba. Si no tienes suerte, obtendrás un conjunto de errores en cascada.
Afortunadamente para todos nosotros, Holly Schinsky ha escrito una buena publicación en el blog para explicarlo todo:
Cordova / PhoneGap Version Confusion
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/
Para el # 10
¿Este requisito relativamente * NUEVO * significa? para acceder a CUALQUIER sitio web o recursos en la web, DEBE usar la lista blanca y el complemento de la lista blanca. Este requisito entra en vigencia si está usando [email protected] o mejor; incluyendo cli-5.1.1. Sin embargo, si su versión es anterior a la 4.0.0, use 3.5.0 o 3.7.0, entonces no tendrá que agregar el requisito de lista blanca .
Para ser claros, la "lista blanca" ha existido por un tiempo, pero el complemento y el requisito son muy nuevos. Como era de esperar, cuando se agregó la "lista blanca", la función de acceso abierto defacto quedó en desuso. O dicho de otra manera, la función de acceso abierto de facto se planeó y se programó para ser eliminada. Este cambio marca un paso en la eliminación de la función de acceso abierto.
Además, la Política de Seguridad de Contenidos (CSP) ha atrapado a numerosos desarrolladores, ya que fue tan poco publicitada. Este CSP debe ir en cada página HTML que utilizó, al igual que tiene que esperar a ''listo para el dispositivo''. La documentación está enterrada en la parte inferior de muchas de las últimas páginas de documentación.
enlaces relacionados
Foro de compilación de Phonegap: Notas para actualizar a cli-5.1.1 en PGB y ahora se requiere lista blanca
Tengo una aplicación web que recientemente intenté convertir a PhoneGap, pero por alguna razón, cuando la ejecuto en mi Android, no tiene acceso a Internet. Al depurar con Chrome a través de USB, veo el error "Error al cargar el recurso: el servidor respondió con un estado de 404 (No encontrado)" para todas las solicitudes externas (por ejemplo, cargar fuentes de Google como hojas de estilo de fonts.googleapis.com
en mi html y llamando firebase desde mi js).
Estoy usando la directiva predeterminada <access origin="*"/>
, que, a mi entender, debería permitir el acceso completo.
Mi config.xml
completo está abajo:
<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="[email protected]">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>
Estaba viendo preguntas aquí que parecen estar relacionadas, y mencionaron que el problema podría tener que ver con el cordova-whitelist-plugin
y que agregar una Content-Security-Policy
metadatos Content-Security-Policy
en mi html podría ayudar, pero no pude T averiguar cómo hacer eso.
EDITAR: Aquí están algunos de los 404 que obtengo. Las URL funcionan bien desde la versión 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)
Usando la aplicación de escritorio y PhoneGap Build, estaba teniendo el mismo problema.
El problema era que index.html
y config.xml
no estaban en la raíz cuando se crearon por primera vez en la aplicación de escritorio. Esto es obligatorio de acuerdo con http://docs.build.phonegap.com/en_US/introduction_getting_started.md.html .
Debido a que estaban en carpetas diferentes, no se cargaron configuraciones ni listas blancas en la aplicación, lo que dio como resultado un grupo de 404.
Para solucionarlo, acabo de mover config.xml
al mismo directorio raíz que index.html
y reconstruí en PhoneGap Build.
Para aquellos que tienen este problema al usar Phonegap 6.3.1, debe incluir en la lista blanca las URL y usar el complemento cordova-plugin-inapbrowser .
Siga leyendo para saber cómo hacer esto.
En primer lugar, asegúrese de haber incluido en la lista blanca las URL que desea abrir. Para ello, agréguelos a los hrefs de <access>
etiquetas <access>
, <allow-intent>
y allow-navigation
en su archivo config.xml en la raíz del proyecto. Necesitas las tres etiquetas. Algo como lo siguiente:
<?xml version=''1.0'' encoding=''utf-8''?>
<widget id="com.phonegap.helloworld" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:gap="http://phonegap.com/ns/1.0">
...
<access origin="*" />
<allow-intent href="*" />
<allow-navigation href="*" />
...
</widget>
(Nota: el "*" en los hrefs anteriores permite la apertura de cualquier url / ruta. En producción, es probable que desee restringir a ciertas URL / rutas)
A continuación, en su archivo index.html, agregue el siguiente javascript:
<script type="text/javascript">
document.addEventListener(''deviceready'', function() {
var url = ''https://www.google.com'' // change to whatever you want
cordova.InAppBrowser.open(url, ''_self'', ''location=no'');
}, false)
</script>
Esta secuencia de comandos utiliza el complemento cordova-plugin-inappbrowser, que, si generó su aplicación con la plantilla Phonegap estándar, ya debería estar incluida en su archivo config.xml.
La secuencia de comandos espera a que el dispositivo esté listo, luego utiliza el complemento cordova-plugin-inappbrowser para abrir la url determinada. El parámetro ''_self''
significa que abre la página en la vista web Phonegap y ''location=no''
significa que no habrá una barra de direcciones. Para otras opciones de parámetros, consulte la documentación del plugin cordova-plugin-inappbrowser (enlace arriba).
Finalmente, para probar la aplicación en los emuladores apropiados (suponiendo que tiene instalada la CLI de Phonegap ), ejecute los siguientes comandos:
phonegap run ios --verbose --stack-trace
phonegap run android --verbose --stack-trace