Дублированные заголовки, полученные с сервера
Дублирующие заголовки, полученные с сервера
Ответ с сервера содержал дубликаты заголовков. Эта проблема обычно является результатом неверно настроенного веб-сайта или прокси. Только администратор веб-сайта или прокси-сервера может исправить эту проблему.
Ошибка 349 (net:: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Получены несколько отдельных заголовков Content-Disposition. Это запрещено для защиты от атак с откликом HTTP-ответа.
Я нашел эту ошибку при экспорте в 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();
Как это исправить?
Ответы
Ответ 1
Это были немного старые, но были высокими в рейтинге google, поэтому я подумал, что я бы выбрал ответ, полученный из Chrome, отображение в формате pdf, дублированные заголовки, полученные с сервера
В основном моя проблема также заключалась в том, что имя файла содержит запятые. Сделайте замену на запятую, чтобы удалить их, и все должно быть в порядке. Моя функция для создания допустимого имени файла ниже.
public static string MakeValidFileName(string name)
{
string invalidChars = Regex.Escape(new string(System.IO.Path.GetInvalidFileNameChars()));
string invalidReStr = string.Format(@"[{0}]+", invalidChars);
string replace = Regex.Replace(name, invalidReStr, "_").Replace(";", "").Replace(",", "");
return replace;
}
Ответ 2
Сервер СЛЕДУЕТ помещать двойные кавычки вокруг имени файла, как упомянуто @cusman и @Touko в их ответах.
Например:
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Ответ 3
Для меня вопрос был о запятой не в имени файла, а как ниже: -
Response.ok(streamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE).header( "content-disposition", " вложение, имя_файла= ваше_файловое имя" ). build();
Я случайно помещаю запятую после прикрепления. Получив это решение, заменив запятую точкой с запятой.
Ответ 4
Просто поставьте пару двойных кавычек вокруг вашего имени файла следующим образом:
this.Response.AddHeader( "Content-disposition", $"attachment; filename = \" {outputFileName}\"");
Ответ 5
Двойные кавычки вокруг имени файла в заголовке являются стандартными для MDN веб-документов. Пропуск кавычек создает множество возможностей для проблем, возникающих из символов в имени файла.