2015-09-22 8 views
20

Ho notato che ogni volta che si scarica un PDF in Chrome, vengono fatte due richieste in modo coerente e una copia di ncancels. Ciò sta causando la registrazione della richiesta due volte nella mia app Web, che non si desidera. C'è un modo per fare in modo che Chrome faccia una sola richiesta per i PDF?Chrome invia due richieste durante il download di un PDF (e ne annulla uno)

Ho studiato un po 'questo argomento ora e non ho trovato una risposta sufficiente. Risposte strettamente correlate suggeriscono che il problema è che Chrome sta cercando una favicon, ma la scheda di rete mostra che sta effettivamente facendo la stessa richiesta due volte e quindi annulla la seconda richiesta.

C'è un modo per impedire a Chrome di effettuare la seconda richiesta?

Di seguito è riportato un collegamento di un file PDF casuale che ho trovato tramite Google, che quando viene fatto clic deve dimostrare il comportamento. Avrei postato una foto della mia scheda di rete in devtools ma questo è il mio primo post su StackOverflow, e il sito mi sta impedendo di caricare un'immagine.

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

+1

http: // stackoverflow.it/questions/1817750/do-most-browsers-make-multiple-http-requests-when-display-a-pdf-from-within-t questo ragazzo ha risposto alla mia domanda. – gregmagdits

+3

@gredmagdits Non penso sia correlato all'intestazione 'Accept-Ranges' perché ho il problema anche quando non viene restituita l'intestazione 'Accept-Ranges'. –

+1

Vedere questa risposta: http://stackoverflow.com/a/37600239/32429 –

risposta

11

Sembra un bug in Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=587709

Il problema è che Chrome, quando si carica un iframe che restituisce un flusso PDF, scrive un tag "embed" dentro quella iframe che ancora una volta contiene lo stesso URL dell'iframe. Ciò attiva nuovamente una richiesta per tale URL, ma Chrome lo annulla immediatamente. (vedere la scheda di rete) Ma a quel punto, il danno è fatto.

Abbiamo lo stesso problema qui, e non si verifica in Firefox o IE.

Stiamo ancora cercando una buona soluzione a questo problema.

+0

Questo è il problema che sto avendo. Hai mai scoperto qualcosa? –

+1

No, abbiamo dovuto adattare il nostro back-end in modo che supportasse più richieste. Scusate! – Moeri

0

Sto ancora cercando di trovare una soluzione adeguata, ma come un "fix" parziale per ora si potrebbe avere due opzioni

1) Impostare la disposizione dei contenuti di "attaccamento" nell'intestazione

impostazione che a "inline" causa Chrome per l'esecuzione di una seconda chiamata cancellata

così per esempio si può fare qualcosa di simile (nodejs resp nell'esempio)

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

un fortunatamente questa soluzione forzare il browser per scaricare il pdf subito, invece di renderlo in linea e che non è forse auspicabile

2) l'aggiunta di "scade" nelle intestazioni questa soluzione sarà sempre sparare una seconda chiamata cancellata ma è ignorato dai il server

così per esempio si può fare qualcosa di simile (nodejs resp nell'esempio)

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

ho avuto lo stesso problema in un iframe. Ho girato l'estensione PDF Viewer e il problema è scomparso. Sto pensando che l'estensione scarica il file due volte. La prima volta che si ottiene la dimensione, la seconda volta da scaricare con una barra di avanzamento (utilizzando la dimensione raccolta nella prima richiesta)

Problemi correlati