Дублированные заголовки, полученные с сервера

Дублирующие заголовки, полученные с сервера

Ответ с сервера содержал дубликаты заголовков. Эта проблема обычно является результатом неверно настроенного веб-сайта или прокси. Только администратор веб-сайта или прокси-сервера может исправить эту проблему.

Ошибка 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 веб-документов. Пропуск кавычек создает множество возможностей для проблем, возникающих из символов в имени файла.