Google Chrome で basic認証を埋め込んだURLの pdfのインライン表示ができない
少し前から Google Chrome で pdf のインライン表示されなくなった
PHPだとこんな単純なコード
$filepath = 'files/foo.pdf';
$filename = 'foo.pdf';
header('Content-Type: application/pdf');
header("Content-Disposition: inline; filename=\"{$filename}\"");
header('Content-Length: ' . filesize($filepath));
readfile($filepath);
Google Chrome では一時的に Content-Disposition: inline がダウンロードになったり、その後、Google Chrome で開いた(中身のないpdf表示)後、アドレスバーへフォーカスを移して Enter キーを入力すると表示されたりします(F5等では変化なし)
PHPの問題なのか、ブラウザの問題なのか...
【追記】原因判明
デベロッパーツールで、表示される場合とされない場合を比較した結果
Basic認証を埋め込んだURLをリンクにした場合、インライン表示が出来ない
親URLに認証を埋め込んだ上で、相対リンク(ドメインを記載しない)を使用した場合でも同じです
アドレスバーへフォーカスを移して Enter を入力した場合は、ドメインに付与されたbasic認証情報が引き継がれないため、正常にインライン表示が出来ていたようです
NG
https://user:password@example.com/
<a href="download.php?file=foo.pdf">
OK
https://user:password@example.com/
<a href="https://example.com/download.php?file=foo.pdf">
コメント