我在网站上有一个部分,我在灯箱里面显示一个pdf.最近的Chrome升级打破了这个显示:
错误349(net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION):收到多个Content-Disposition标头.这是不允许的,以防止HTTP响应分裂攻击.
这仍然可以在IE中正常工作.
我在IIS6上使用ASP.NET MVC3
我用来生成文件的代码如下.
如果我删除内联语句,则文件会下载,但会破坏灯箱功能.
问题代码
public FileResult PrintServices()
{
//... unrelated code removed
MemoryStream memoryStream = new MemoryStream();
pdfRenderer.PdfDocument.Save(memoryStream);
string filename = "ServicesSummary.pdf";
Response.AppendHeader("Content-Disposition", "inline;");
return File(memoryStream.ToArray(), "application/pdf", filename);
}
Run Code Online (Sandbox Code Playgroud)
修复
去掉
Response.AppendHeader("Content-Disposition", "inline;");
Run Code Online (Sandbox Code Playgroud)
然后改变
return File(memoryStream.ToArray(), "application/pdf", filename);
Run Code Online (Sandbox Code Playgroud)
至
return File(memoryStream.ToArray(), "application/pdf");
Run Code Online (Sandbox Code Playgroud)