Când mă duc la anumite adrese de fișiere PDF, Chrome descarcă PDF în loc de a-l deschide folosind built-in vizualizator PDF. Pagina este apoi alb gol.
Nu există nici o problemă cu setările Chrome: incerc adresele altor fișiere PDF, și Chrome se comportă așa cum era de așteptat (am setat-o pentru a utiliza Chrome's built-in vizualizator PDF). Dar de fiecare dată am încerca aceeași problematică adresa, Chrome descarcă PDF și apoi afișează o pagină goală.
Sunt folosind Windows 10 și Chrome Versiune 63.0.3239.84 (Oficial Construi) (64-bit)`.
Meu specifice problematice URL-ul de data asta este aici (o căutare pe Google rezultat).
Content-Disposition
Content-Disposition
antet în răspuns. În mod specific, se poate trimite fie inline
sau "attachment".
inline
este implicit dacă nu se specifică altfel, și înseamnă că browser-ul va deschide fișierul în fereastra browser-ului dacă acesta este capabil să.
"attachment" înseamnă întotdeauna să descărcați fișierul, nu încercați niciodată să deschideți-l în browser. Dacă deschideți browser-ul dvs.'s developer tools, ai'll vedea că anumite link-ul trimite următoarele anteturile de răspuns:
Content-Disposition: attachment; filename="Schubert-Sonata-21-B-flat.pdf"
Content-Type: application/pdf
Schubert-Sonata-21-B-plat.pdf
, mai degrabă decât să deducem că de la URL-ul. În plus, acesta nu spune browser-ului (în mod corect) că's o `application/pdf file - dar din moment ce's o "attachment" browser-ul încă va implicit pentru a descărca. Când o Content-Disposition
este inline (sau neprecizat), browser-ul va încerca pentru a deschide fișierul în mod implicit încorporat viewer. Aceasta funcționează numai atunci când browser-ul știe ce tip de fișier este, și browser-ul știe cum să deschidă acest tip.
Tipul de fișier poate fi specificat de server, cu o Content-Type
antet. De exemplu, cele mai frecvente inline tipuri sunt text/html", "cerere/javascript" și " text/css
, de a face până la trei mari părți ale unui site modern. Puteți, de asemenea, au mai ezoterice tipuri, cum ar fi application/pdf
.
O altă posibilitate este serverul are specificat un "Content-Type" de application/octet-stream
. Acesta este cel mai generic de tip, și se spune browser-ului că fișierul este arbitrară de date - moment în care singurul lucru pe care browser-ul poate face este să descărcați-l (în teorie - ne'll ajunge la asta).
Atunci când un "Content-Type" nu este specificat de server (și, uneori, chiar și atunci când este), browser-ul poate efectua ceea ce este cunoscut sub numele de sniffing să încercați să ghiciți tip de lectură fișierul și caută modele.
inline
sau nespecificat dispoziție, browser-ul trebuie să încercați să-l deschideți în browser-ul, dacă este posibil. Pentru a face acest lucru, se pare, la tipul de fișier, și dacă-l recunoaște tipul acesta va încerca să-l deschidă. Cele mai multe browsere va deschide orice text/ tip într-un simplu vizualizator de text, va încerca să face
text/htmlca o pagină web, ar putea deschide
application/json într-o sintaxă specială-a subliniat viewer](https://developer.mozilla.org/en-US/docs/Tools/JSON_viewer), etc..
Tipul application/octet-stream fost tratate special. Deoarece's trebuie să fie cel mai de tip generic, ceea ce denotă un arbitrar flux de octeți, nu e't ar trebui să fie nici un handler care se poate aplica la toate fișierele de acest "tip". De exemplu, în Firefox, [aceasta se manifestă ca o incapacitate de a seta default handler](http://kb.mozillazine.org/File_types_and_download_actions#Unable_to_set_an_automatic_action) pentru
application/octet-stream. Unele site-uri au folosit, de asemenea, non-standard, tipuri. Am'am văzut cererea/force-descărcare utilizate - care se termină ca o descărcați pentru că browser-ul nu recunoaște sau nu știu ce altceva să fac cu tipul, dar nu se bucură de o manipulare specială care
application/octet-stream` nu. Pentru a vedea cât de Pdf-uri sunt manipulate, putem îngropa un pic în istoricul web. A se vedea, în trecut, browsere avut nici o idee despre ceea ce un PDF este. Deci, ei nu au putut deschide. Dar ne-am'am vazut Pdf-uri fiind deschis în browsere cu mult înainte de built-in PDF spectatori au fost de lucru, așa cum a făcut asta?
Este folosit pentru a fi posibil să se extindă funcționalitatea browser cu mult mai mult control decât ceea ce poți face cu un număr limitat de extensii/addons aceste zile. Acestea au fost cele mai generic cunoscute sub numele de [plugin-uri](https://en.wikipedia.org/wiki/Plug-in_(de calcul)). În Internet Explorer, au fost controale ActiveX; în Mozilla Firefox și, mai târziu, Google Chrome au fost pluginurile NPAPI. Aceste plugin-uri au fost capabil de a face tot ceea ce orice alt program ar putea, și ar putea de asemenea se înregistreze ca un handler pentru un anumit tip de fișier, care ar putea fi altfel nerecunoscute de către browser. (De altfel, acest lucru a fost mai târziu dovedit a fi un mare risc de securitate și de sprijin pentru aceste puternice plugin-uri a fost treptat abandonat...)
În zilele de plugin-uri, ar merge și instalați Adobe Acrobat Reader, care ar fi apoi instalați un ActiveX sau NPAPI plugin care ar înregistra application/pdf
tip MIME și spune browser-ului pentru a deschide aceste tipuri de linie, folosind plugin-ul.
Desigur, după o serie de probleme de securitate și performanță cauzate de aceste plugin-uri, browser-ul majore furnizori decis să includă propriile PDF telespectatori, în timp ce eliminarea treptată suport pentru cele mai multe plugin-uri. Singurul vom vedea în continuare este Adobe Shockwave Flash, care se ocupă de application/x-shockwave-flash
.
Nu's, de fapt încă unele resturi de control pentru acest lucru, de exemplu, în Firefox Previzualizare în Firefox
opțiune încă mai există:
În trecut, acest lucru ar fi permis alegerea între mai multe plugin-uri care au înregistrat acest tip. De exemplu, lista de inscrisi tipuri de Flash:
Acele zile au fost, de asemenea, înainte de o mulțime de mass-media de sprijin care a venit cu HTML5. Nu a fost't doar Pdf-uri în browser - ul tău nu ar avea nici o idee cum să se ocupe de un container MP4 sau H. 264 video, nici o idee cum să joace un fișier MP3, etc., etc.. nu Te-ar vedea plugin-uri furnizate de mass-media, jucători precum VLC sau chiar Windows Media Player, sau site-uri ar încorpora un media player construit în Flash.
Am găsit o explicație. Potrivit unei raspuns am găsit, se pare că Chrome va descărca un PDF cazul în care MIME tip de conținut este setat să nu application/pdf
, ci mai degrabă o "incorect sau generice tip MIME", application/octet-stream
.
Mai mult, "cele Mai multe servere web trimite necunoscut-tip de resurse, folosind implicit application/octet-stream
tip MIME. Din motive de securitate, cele mai multe browsere nu permite setarea personalizată acțiune implicită pentru astfel de resurse, forțând utilizatorul pentru a stoca pe disc pentru a-l folosească."
Acest lucru se datorează HTTP Content-Disposition
antet a preciza că fișierul este un atașament**. Acest lucru cere browser-ul pentru a descărca fișierul, mai degrabă decât să îl deschideți direct.
Există Chrome add-on care poate înlocui acest comportament. imaginea De mai jos este de la Firefox developer tools: