gpt4 book ai didi

php - 内容类型导致 chrome 调用函数两次

转载 作者:搜寻专家 更新时间:2023-10-31 22:07:42 25 4
gpt4 key购买 nike

以下代码最奇特的问题。它向浏览器返回一个 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 中的跟踪输出如您所料:

  1. cart_aspdf_in
  2. cart_aspdf_readfile
  3. cart_aspdf_out

但 chrome 的跟踪显示以下内容,这似乎表明该函数至少被调用两次,如果不是三次的话。为什么会这样?

  1. cart_aspdf_in
  2. cart_aspdf_readfile
  3. cart_aspdf_out
  4. cart_aspdf_in
  5. cart_aspdf_readfile
  6. cart_aspdf_in
  7. cart_aspdf_readfile
  8. cart_aspdf_out

如果我省略了内容类型行但随后 chrome 显示了没有用的原始 pdf 数据,则不会出现此问题

最佳答案

我遇到了同样的问题。

header('Content-Disposition: inline;');

无论出于何种原因,当 content-disposition 是内联时,它会调用页面两次。

这让我在尝试使用引荐来源网址时遇到问题,因为第二次调用没有传递引荐来源网址数据。

使用

header('Content-Disposition: attachment;');

只运行一次,但不会在浏览器 PDF 查看器中显示。它将改为下载文件。

我认为这需要发布在 chrome 的 bugtracker 上。这非常烦人,并且对于流式传输文件来说是一种带宽浪费。

关于php - 内容类型导致 chrome 调用函数两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16198085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com