在Chrome中,PDF生成结果为ERR_INVALID_RESPONSE - php

在浏览器中以编程方式(通过PHP)生成PDF时,呈现的PDF在Firefox和Safari中均可正常显示,但Chrome返回ERR_INVALID_RESPONSE。这是有效的PDF-一旦从工作的浏览器中保存,就可以使用Adobe Reader / Preview在本地打开,并且从其他浏览器中保存PDF后,甚至可以在Chrome中打开。

正在通过file_get_contents()读取PDF文件,为其提供当前时间戳,然后将其传递到浏览器。解决方法是将文件保存到临时位置并重定向用户(至少对于Chrome来说),但这不是理想的选择。

我已经对其进行了研究,但只能找到bug reports dating from 2008。

我有一个暗示,这是标题错误。生成PDF后,以下标头将发送到浏览器(同样可以在FF,Safari和IE中正常工作):

    header('Content-type:application/pdf');
    header("HTTP/1.1 200 OK");

在堆栈溢出搜索之后,我也尝试添加以下标头,但无济于事:

    header("Content-Transfer-Encoding: binary");
    header('Accept-Ranges: bytes');

Chrome是否需要缺少标题?有没有人有过将动态生成的PDF显示在Chrome中的经验?

编辑:我最明显的问题之一是可能导致它在Chrome中本地正常运行的原因,但在服务器环境中无法正常工作。

参考方案

在我的情况下,我必须将这两个参数添加到标头中,因为wordpress正在发送404代码,因为它无法识别我的php函数的网址:

header("Content-type: application/pdf",true,200);

如answer on wordpress.stackexchange中所述。

这会强制标头替换(第二个参数true)由wordpress生成的404状态代码,因为它无法识别自定义网址,并设置为200 OK(第三个参数200)。

这样就结束了:

$pdf_name = "test.pdf";
$pdf_file = "/absolute/path/to/my/pdfs/on/my/server/{$pdf_name}";
header('Content-type: application/pdf',true,200);
header("Content-Disposition: attachment; filename={$pdf_name}");
header('Cache-Control: public');
readfile($pdf_file);
exit();

AJAX响应时间 - php

如何计算AJAX响应时间?我需要用脚本编写此脚本,因为我可以获取服务器时间戳,但是如果请求花费的时间超过1秒,则需要在时间戳上加上1秒! 参考方案 您需要获取开始时间(恰好在AJAX请求完成之前),然后获取脚本完成时的结束时间。您可以算出差异,如果差异大于60秒,请执行您的操作。//Before the AJAX function runs var star…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP-如何建议搜索字词,“你是说……?” - php

当使用不检索任何结果的术语搜索数据库时,我想允许“您是不是……”建议(例如Google)。例如,如果有人寻找“ jquyer””,它将输出“ did you mean jquery?”当然,建议结果必须与数据库内部的值匹配(我正在使用mysql)。您知道可以做到这一点的图书馆吗?我已经用谷歌搜索过,但是没有找到任何好的结果。或者,也许您有一个想法,该如何独自…