8

我一直在使用 PHP 脚本将数据从我的数据库 (mysql) 导出到 XLS 文件。

虽然文件导出过程在 Firefox 和 IE 上运行良好。

尝试使用 Google Chrome 导出时出现错误。

谷歌浏览器错误是

    Duplicate headers received from server

The response from the server contained duplicate headers. This problem is generally the result of a misconfigured website or proxy. Only the website or proxy administrator can fix this issue.

Error 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Multiple distinct Content-Disposition headers received. This is disallowed to protect against HTTP response splitting attacks.

我需要一些帮助。

谢谢

4

4 回答 4

12

我在 PHP 导出代码的标题部分发现了我的问题。错误和正确的行如下:

不正确

header("Content-Disposition: attachment;filename=\"".$this->filename."\"");

正确的

header("Content-Disposition: attachment; filename=\"".$this->filename."\"");

更正是在附件之间添加空格;文件名

希望这可以帮助。

于 2012-05-28T09:54:50.470 回答
9

我有同样的问题。然而,仅很少出现。原因相似但不完全相同。

不正确

header("Content-Disposition: attachment; filename=$filename");

正确的

header("Content-Disposition: attachment; filename=\"$filename\"");

$filename 有时包含空格,从而导致提及 Chrome 错误。

于 2012-11-05T13:56:37.060 回答
2

我也面临同样的问题。下载名称中带有逗号的文件时,它说“收到了重复的标头”,并且仅在 chrome 中。在 Firefox 中没问题。之后,我将代码从
header("Content-Disposition: attachment; filename=$myfilename");to 更改为header("Content-Disposition: attachment; filename=\"$myfilename\"");,它运行良好。希望它对你有用。

于 2014-10-07T07:33:05.487 回答
2

试试这个可能对你有帮助, header('Content-Disposition: attachment; filename= "'.$file_name.'"' );

代替

header('Content-Disposition: attachment; filename='.$file_name);

于 2018-08-28T19:57:49.463 回答