这只发生在Chrome中,在Safari中运行良好。 Chrome正在抱怨正在接收重复的内容处置标头。当我将文件上传到S3时,我设置了内容处理,以便我可以在下载时命名该文件,并确保将其作为附件(不是内联)下载。
这是我具体得到的:
答案 0 :(得分:2)
当我遇到这个错误时,是因为我有这样的事情:
Response.AddHeader("Content-Disposition", "attachment;filename=file,withcomma.pdf")
Chrome将此解释为两个Content-Disposition标头:“attachment:filename = file”和“,withcomma.pdf”。
用引号括起文件名解决了我的问题:
Response.AddHeader("Content-Disposition", "attachment;filename=\"file,withcomma.pdf\"")
答案 1 :(得分:0)
我已经看到了你的问题而且我刚刚解决了我的问题,尽管我的代码是asp.net。我今天开始收到此错误,Chrome必须添加一些更严格的标题处理。无论如何,我的错误被证明是我设置内容处置标题的部分。
而不是
Response.AppendHeader(“Content-Disposition”,“attachment,filename = abcdxyz.pdf”)
我把它改成了
Response.AppendHeader(“Content-Disposition”,“attachment; filename = abcdxyz.pdf”)
逗号似乎会引起某种问题,切换到分号似乎可以解决它。它现在对我来说很好,但是我应该提到我对Amazon S3(根本不熟悉)所以也许我已经离开了,但是因为它对我有用,也许它对你有用。
答案 2 :(得分:0)
Chrome上的重复标题错误是HTML标题的错误:当文件名带有逗号时,“Content-disposition:attachment”。
这里的解决方案,我们只需在文件名之间添加双引号(“)作为示例:
Response.AddHeader("Content-Disposition", "attachment;filename=\"file,withcomma.pdf\"")
此解决方案适用于所有浏览器(我在IE11,Chrome,Firefox上测试过)
答案 3 :(得分:-1)
原始代码:
header("Content-Disposition: attachment; filename=$displayname");
改变:
header('Content-Disposition: attachment; filename="'.$displayname.'"');