2015-04-10 1 views
1

Je suis en train de télécharger un fichier PDF à partir d'une webapp Firefox OS, mais lorsque je tente de le faire PDF.js me donne l'erreur suivante:Impossible de télécharger un fichier PDF au sein de Firefox OS webapp

PDF.js v0.8.997 (compilacion: 3fa15c8) 
Mensaje: Unexpected server response (0) while retrieving PDF "http://xxxx.xx/xxx.pdf" 

Cela se produit lorsque je débauche via l'extension "WebIDE" dans Firefox. Lorsque j'essaie de faire la même chose avec un émulateur FirefoxOS, je peux télécharger le fichier, mais il n'est pas stocké. En fait, lorsque j'appuie sur la notification, je reçois un message me disant que le fichier ne peut pas être fondé. Quand je fais la même chose sur les navigateurs (Firefox, Chrome, ...) je n'ai pas la même erreur, donc je pense que je ne peux pas ignorer les problèmes d'en-têtes HTTP.

Je ne suis pas sûr, mais ... Peut-être un problème lié au fait que c'est une webapp non fiable?

MISE À JOUR:

J'ai essayé de faire la même chose mais avec un fichier jpeg et je n'ai pas eu aucun problème. Cela me fait penser que c'est un problème avec PDF.js.

Répondre

0

Le fichier de Mozilla utilise XMLHttpRequest (XHR) pour demander le fichier pdf. Découvrez leur network code, en particulier Line 101. Votre application a besoin de la permission systemXHR, afin d'utiliser XHR.

SystemXHR

Allows anonymous (no cookies) cross-origin XHR without the target site having CORS enabled. Similar to the TCP Socket API but restricted to XHR, not just raw sockets, so it is slightly less risky.

Source: https://developer.mozilla.org/en-US/Apps/Build/App_permissions

Ne pas oublier, pour changer votre type d'application à privileged dans votre manifest.webapp:

"name": "app", 
"description": "My description", 
"type": "privileged", 
"permissions": { 
    "systemXHR": { 
    "description": "Add a description for the marketplace reviewer" 
    } 
} 

S'il vous plaît notez que Firefox OS vise à fonctionner sur des appareils à faible Mémoire. Vous devez d'abord enregistrer le fichier PDF dans le fichier device-storage (sdcard) avant de l'ouvrir.

+0

Je pense que c'est un bon point @ mate64. C'est tellement bon ... que je l'ai déjà essayé :) Mais cette théorie n'explique pas pourquoi quand j'accède directement au fichier via l'application, sans le traitement que j'ai besoin de faire, je peux télécharger et voir le fichier, mais quand je le traite, j'obtiens l'erreur que j'explique dans la question. Cela me fait penser que c'est un problème lié aux en-têtes HTTP, mais je ne suis pas sûr. – dlopez

+0

Quels sont les en-têtes de réponse de la requête xhr? – mate64

+0

C'est un autre problème ... Lorsque je connecte l'appareil à WebIDE, l'onglet Newtwork disparaît donc je ne vois plus d'en-têtes (ni les en-têtes de requête, ni les en-têtes de réponse). Lorsque je débogue avec le simulateur FirefoxOS, je n'ai aucun problème pour télécharger le fichier, mais il n'est pas sauvegardé sur l'appareil (comme prévu car c'est une application hébergée et je n'ai pas d'autorisation d'écriture sur l'appareil) essayé avec les mêmes en-têtes qui apparaît lorsque je télécharge directement le fichier, et je n'ai plus de succès. C'est un peu étrange tout. – dlopez