从服务器收到重复的标头
服务器的响应包含重复的头。此问题通常是网站或代理配置错误的结果。只有网站或代理管理员可以解决此问题。
错误349(net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION):收到多个不同的Content-Disposition标头。不允许这样做以防止HTTP响应拆分攻击。
我在Chrome中导出为pdf时发现了此错误。
Response.Buffer = false;
Response.ClearHeaders();
string ext = objProp.PACKAGEFILENAME.Substring(objProp.PACKAGEFILENAME.LastIndexOf("."));
string ext1 = ext.Substring(1);
Response.ContentType = ext1;
Response.AddHeader("Content-Disposition", "target;_blank,attachment; filename=" + objProp.PACKAGEFILENAME);
const int ChunkSize = 1024;
byte[] binary = objProp.PACKAGEDOCUMENT;
System.IO.MemoryStream ms = new System.IO.MemoryStream(binary);
int SizeToWrite = ChunkSize;
for (int i = 0; i < binary.GetUpperBound(0) - 1; i = i + ChunkSize)
{
if (!Response.IsClientConnected) return;
if (i + ChunkSize >= binary.Length) SizeToWrite = binary.Length - i;
byte[] chunk = new byte[SizeToWrite];
ms.Read(chunk, 0, SizeToWrite);
Response.BinaryWrite(chunk);
Response.Flush();
}
Response.Close();
如何解决这个问题?
18
我还发现文件名中的逗号会导致该错误(仅在Chrome中)。我认为必须有一种方法可以告诉它filename =“ abc,xyz.pdf”是有效的。我知道我们可以用其他东西代替“,”,但是我想保留并返回原样的文件名。我尝试过的其他浏览器(IE,FireFox,Safari,Opera)都没有这个问题。
—
cusman 2014年
因此,有一种方法可以让它在文件名中仍然包含逗号。只需引用文件名即可。
—
cusman 2014年
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
谢谢@cusman。那正是我的问题-文件名中的逗号,只有Chrome出现问题。
—
PeterKA