2015-09-22 7 views
20

Zauważyłem, że za każdym razem, gdy pobierasz plik PDF w chrome, konsekwentnie tworzy dwie prośby, a ncancels jedną z nich. Powoduje to, że żądanie jest rejestrowane dwukrotnie w mojej aplikacji internetowej, której nie chcę. Czy istnieje sposób na to, by Chrome składał tylko jedną prośbę o pliki PDF?Chrome wysyła dwa żądania podczas pobierania pliku PDF (i anuluje jedno z nich).

Badałem już teraz ten temat i nie znalazłem wystarczającej odpowiedzi. Ściśle powiązane odpowiedzi sugerują, że problem polega na tym, że Chrome szuka favikona, ale karta sieciowa pokazuje, że faktycznie robi to samo żądanie dwa razy, a następnie anuluje drugie żądanie.

Czy istnieje sposób, aby uniemożliwić Chrome drugą prośbę?

Poniżej znajduje się link do losowego pliku PDF znalezionego przez Google, który po kliknięciu powinien demonstrować zachowanie. Chciałbym opublikować zdjęcie mojej karty sieciowej w devtools, ale jest to mój pierwszy wpis na stackoverflow, a strona zakazuje mi przesyłania zdjęć.

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

+1

http: // stackoverflow.com/questions/1817750/do-most-browsers-make-multiple-http-requests-when-displaying-a-pdf-from-in-t Ten facet odpowiedział na moje pytanie. – gregmagdits

+3

@gredmagdits Nie sądzę, że jest związany z nagłówkiem "Accept-Ranges", ponieważ mam problem, nawet jeśli nie zwróciłem nagłówka "Accept-Ranges". –

+1

Zobacz tę odpowiedź: http://stackoverflow.com/a/37600239/32429 –

Odpowiedz

11

To wygląda na błąd w Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=587709

Problemem jest to, że Chrome, gdy ładuje iframe, która zwraca strumień PDF, pisze „osadzenia” tag wewnątrz tego iframe, który ponownie zawiera ten sam URL co element iframe. Spowoduje to ponowne uruchomienie żądania dla tego adresu URL, ale Chrome natychmiast go anuluje. (patrz zakładka sieci) Ale do tego czasu obrażenia zostaną zniszczone.

Mamy ten sam problem tutaj, i nie występuje on w przeglądarce Firefox lub IE.

Wciąż szukamy dobrego rozwiązania tego problemu.

+0

To jest problem, który mam. Czy kiedykolwiek coś rozumiesz? –

+1

Nie, musieliśmy dostosować nasz backend, aby obsługiwał wiele żądań. Przepraszam! – Moeri

0

Ja wciąż próbuje znaleźć właściwe rozwiązanie, ale jako częściowy „naprawić” na teraz można mieć dwie opcje

1) ustawić dyspozycję treści do „attachment” w nagłówku

ustawień że do „inline” przyczyna chrom uruchomić drugą anulowane połączenia

tak na przykład można zrobić coś takiego (nodejs resp na przykład)

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

un Na szczęście to rozwiązanie zmusi przeglądarkę do natychmiastowego pobrania pliku PDF, zamiast renderowania go w linii, a to może nie być znaczące. 2) dodanie "wygasania" w nagłówkach to rozwiązanie zawsze wywoła drugie anulowane połączenie, ale zostanie zignorowane przez serwer

tak na przykład można zrobić coś takiego (nodejs resp w przykładzie)

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

miałem ten sam problem w iframe. Odwróciłem rozszerzenie przeglądarki PDF i problem zniknął. Myślę, że rozszerzenie pobiera plik dwukrotnie. Po raz pierwszy, aby uzyskać rozmiar, po raz drugi, aby pobrać z paska postępu (przy użyciu rozmiaru zebrane w pierwszym wniosku)

Powiązane problemy