Chrome envoie deux requêtes lors du téléchargement D'un PDF (et en annule une))

j'ai remarqué que chaque fois que vous téléchargez un PDF dans Chrome, il fait régulièrement deux demandes, puis annule l'un d'eux. Cela provoque la demande d'être enregistré deux fois dans mon application Web, qui ne veulent pas. Y a-t-il un moyen de faire en sorte que Chrome ne fasse qu'une seule demande de PDF?

j'ai fait beaucoup de recherches sur ce sujet maintenant, et je n'ai pas trouvé une réponse suffisante. Les réponses étroitement liées suggèrent que le problème est que Chrome est à la recherche d'un favicon, mais le l'onglet Réseau montre qu'il fait en fait la même requête deux fois, puis annule la seconde requête.

y a-t-il un moyen d'empêcher Chrome de faire la deuxième requête?

ci-dessous est un lien vers un fichier PDF aléatoire que j'ai trouvé par Google qui, une fois cliqué devrait démontrer le comportement. J'aurais posté une image de mon onglet Réseau dans devtools mais c'est mon premier post sur le débordement de la pile, et le site m'interdit de télécharger un image.

https://www.adobe.com/enterprise/accessibility/pdfs/acro6_pg_ue.pdf

20
demandé sur TRiG 2015-09-22 22:49:49
la source

3 ответов

on dirait un bug dans Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=587709

le problème est que Chrome, quand il charge une iframe qui renvoie un flux PDF, écrit une étiquette" embed " à l'intérieur de cette iframe qui contient à nouveau la même URL que l'iframe. Cela déclenche à nouveau une requête pour cette URL, mais Chrome l'annule immédiatement. (voir l'onglet réseau) Mais, à l'époque, le mal est fait.

nous ont le même problème ici, et il ne se produit pas dans Firefox ou IE.

Nous sommes toujours à la recherche d'une bonne solution à ce problème.

11
répondu Moeri 2016-08-10 13:07:20
la source

j'essaie toujours de trouver une bonne solution mais comme une "correction" partielle pour l'instant, vous pourriez avoir deux options

1) définissez la disposition du contenu à "attachment" dans l'en-tête

paramétrant cela à "inline" faire exécuter par chrome un second appel annulé

donc par exemple, vous pouvez faire quelque chose comme ça (nodejs resp en exemple)

res.writeHead(200, {
    'Content-Type' : 'application/pdf',
    'Access-Control-Allow-Origin' : '*',
    'Content-Disposition' : 'attachment; filename=print.pdf'
});

malheureusement cette solution va forcer le navigateur à télécharger le pdf immédiatement au lieu de le rendre en ligne et ce n'est peut-être pas désirable

2) Ajouter "expire" dans les en-têtes cette solution lancera toujours un second appel annulé mais il est ignoré par le serveur

donc par exemple, vous pouvez faire quelque chose comme ça (nodejs resp en exemple)

res.writeHead(200, {
    'Content-Type' : 'application/pdf',
    'Access-Control-Allow-Origin' : '*',
    'Content-Disposition' : 'inline; filename=print.pdf',
    'Expires' : new Date(new Date().getTime() + (60000))
});
0
répondu Brugolo 2016-10-17 12:19:55
la source

j'ai eu le même problème dans une iframe. J'ai tourné L'extension PDF Viewer et le problème a disparu. Je pense que l'extension télécharge le fichier deux fois. La première fois pour obtenir la taille, la deuxième fois pour télécharger avec une barre de progression (en utilisant la taille recueillie dans la première demande)

0
répondu George Beier 2017-10-03 18:59:12
la source

Autres questions sur pdf google-chrome