web-dev-qa-db-ja.com

HTTPヘッダーが壊れていますか?ブラウザはPDFを開きませんが、他のすべてのPDFを開きます

私のFirefoxとChromeは、通常、PDFファイルを非常にうまく開きます。

弊社のWebサイト上のPDFへのリンクをクリックすると:

  • Firefoxはそれらをダウンロードするかどうかを尋ねます。それを確認するには、ダウンロード履歴を開く必要があります。
  • Chromeは自動的にダウンロードしますが、ここでもPDFを開くには余分なクリックが必要です。

PDFを別のサーバー(lighttpdを使用したDjangoのインストール)にコピーすると、FirefoxとChromeが通常どおりうまく表示されます。

どうしましたか?

1
Philipp Zedler

ダウンロードの代わりにブラウザでファイルを強制的に開く方法(pdf)?ColinM からの回答があり、ヘッダーがどうあるべきかを正確に示しています:

ファイルをブラウザで表示する必要があることをブラウザに示すには:

Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"

ファイルを表示せずにダウンロードするには:

Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"

編集:ファイル名にfilename[1].pdfなどの特殊文字が含まれている場合、ファイル名を囲む引用符が必要です。そうしないと、ブラウザの応答処理能力が損なわれる可能性があります。

3

解決策はかなり特別でした。

サーバーには、PDFファイル用のデフォルトのMIMEタイプapplication/octet-streamがありました。これをapplication/pdfに変更すると、すべて正常に機能しました。

Lighttpd構成では、この定義を追加することで変更を達成しました。

mimetype.assign += ( ".pdf" => "application/pdf" )
0
Philipp Zedler