Нажатие кнопки «Назад» на странице с PDF-файлом в Firefox и Chrome приводит к появлению заголовка в теге <body> - PullRequest
0 голосов
/ 08 марта 2011

Я сталкиваюсь с очень странной ошибкой в ​​Firefox и Chrome. Ошибка не возникает в Safari. Я отображаю PDF на странице со следующим кодом (работает нормально):

header('Content-Length: ' . filesize($pdfPath));
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: inline; filename="' . $pdfId . '.pdf"');

readfile($pdfPath);

PDF прекрасно загружается, но когда я нажимаю кнопку «Назад» в браузере (Firefox и Chrome), на странице, к которой я возвращаюсь, заголовок HTTP включается в тег body.

HTTP/1.1 200 OK Date: Tue, 08 Mar 2011 00:18:47 GMT Server: Apache/2.0.63 (Unix) PHP/5.2.13 DAV/2 mod_ssl/2.0.63 OpenSSL/0.9.7l X-Powered-By: PHP/5.2.13 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 7010 Keep-Alive: timeout=15, max=92 Connection: Keep-Alive Content-Type: text/html 

Этот заголовок предназначен для текущей страницы (а не страницы, на которой отображен PDF). При отладке я распечатал тег body со следующим кодом jQuery:

console.log($('body').html());

Заголовок появляется перед любым другим содержимым в теле. Любые идеи относительно того, что могло вызвать появление этого мошеннического заголовка?

1 Ответ

0 голосов
/ 15 марта 2011

Наконец выяснили, что происходит, и исправить это было довольно просто. Я только что добавил exit () после readfile (), поэтому окончательный код выглядел так:

header('Content-Length: ' . filesize($pdfPath));
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: inline; filename="' . $pdfId . '.pdf"');

readfile($pdfPath);
exit();
...