session_start () портит загрузку PDF через PHP в IE8 - PullRequest
2 голосов
/ 02 августа 2011

Я использую этот код для отправки посетителю PDF-файла через PHP ([ссылка] [1]):

session_start();

$fileName = '0-1.pdf';
$file = '../invoices/'. $fileName;
if (file_exists($file)) {
  $size = filesize($file);  
  header('Content-Disposition: attachment; filename="'. $fileName .'"');
  header('Content-Length: '.$size);  
  header('Content-type: application/octetstream');
  #header('Content-type: application/pdf');
  echo file_get_contents($file);
}

Хорошо работает в Chrome, FF и IE 9, но не работает в IE 8.

Причина, по которой он не работает,

session_start();

Если я пропущу это, оно будет работать и в IE 8.

К сожалению, мне нужен сеанс. Поскольку вся причина передачи PDF через PHP - проверка подлинности. Поэтому мне нужен идентификатор сеанса, чтобы проверить, разрешен ли текущему пользователю доступ к PDF.

Любые идеи, как заставить загрузку работать в IE 8 с заголовками session_start () отправляет?

1 Ответ

3 голосов
/ 02 августа 2011

Только что нашел решение.

Aftter session_start() Мне нужно установить эти заголовки, чтобы он работал с IE 8:

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: public");

Странное поведение ... Но теперь это работает: -)

...