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">

コメント