以下代码最特殊的问题。它向浏览器返回一个 pdf 报告。
function cart_aspdf() {
trace('cart_aspdf_in');
$file = 'order_WS000250.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $file . '"');
$file = APPPATH.'pdfcache/'.$file;
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
trace('cart_aspdf_readfile');
@readfile($file);
trace('cart_aspdf_out');
}
Opera,firefox,ie,safari 中的跟踪输出如您所料:
- cart_aspdf_in
- cart_aspdf_readfile
- cart_aspdf_out
但是 chrome 的跟踪显示以下内容,这似乎表明该函数至少被调用了两次,如果不是三次的话。为什么会这样?
- cart_aspdf_in
- cart_aspdf_readfile
- cart_aspdf_out
- cart_aspdf_in
- cart_aspdf_readfile
- cart_aspdf_in
- cart_aspdf_readfile
- cart_aspdf_out
如果我省略 content-type 行,则不会出现问题,但是 chrome 显示了没有用的原始 pdf 数据