Mon Firefox et Chrome ouvrent généralement les fichiers PDF très bien, sans rien demander et dans la fenêtre du navigateur.
Lorsque vous cliquez sur un lien vers un PDF sur notre propre site Web:
Si je copie le PDF sur un autre serveur (installation de Django avec lighttpd), Firefox et Chrome s'affichent correctement, comme d'habitude.
Qu'est-ce qui ne va pas?
Voir Comment forcer les fichiers à s'ouvrir dans le navigateur au lieu du téléchargement (pdf)? qui a une réponse de ColinM qui vous dit exactement ce que les en-têtes doivent être:
Pour indiquer au navigateur que le fichier doit être visualisé dans le navigateur:
Content-Type: application/pdf Content-Disposition: inline; filename="filename.pdf"
Pour que le fichier soit téléchargé plutôt que visualisé:
Content-Type: application/pdf Content-Disposition: attachment; filename="filename.pdf"
EDIT: Les guillemets autour du nom de fichier sont obligatoires si le nom de fichier contient des caractères spéciaux tels que
filename[1].pdf
, ce qui risquerait sinon d'empêcher le navigateur de traiter la réponse.
La solution était plutôt spéciale.
Le serveur avait le type MIME par défaut application/octet-stream
pour les fichiers PDF. Après avoir changé ceci en application/pdf
tout a bien fonctionné.
Dans la configuration de lighttpd, j'ai apporté la modification en ajoutant cette définition:
mimetype.assign += ( ".pdf" => "application/pdf" )