session_start()在IE8中通过PHP搞砸PDF下载

时间:2011-08-02 09:04:44

标签: php session internet-explorer-8 http-headers download

我使用此代码通过PHP将PDF发送给访问者([link] [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中使用。

不幸的是我需要会话。由于通过PHP传递PDF的全部原因是执行身份验证检查。所以我需要会话ID来检查当前用户是否被允许访问PDF。

如何在IE 8中使用头文件session_start()发送下载?

1 个答案:

答案 0 :(得分:3)

刚刚找到解决方案。

Aftter session_start()我必须设置theese标头才能让它与IE 8一起使用:

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

奇怪的行为......但它现在有效: - )