Нужно ли устанавливать Content-Length в моем заголовке ответа?
Вопрос
Я проверяю некоторый устаревший код и обнаружил ошибку, из-за которой ответ остается неопределенным.
Вот основная идея:
Response.Content-Type = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename" & someFileName)
Response.AddHeader("Content-Length", someStoredLength)
Response.BinaryWrite(someByteArray)
Response.Flush()
Response.End()
Проблема в том, что someStoredLength намного больше, чем фактический размер someByteArray, поэтому клиент просто сидит и ждет загрузки файла, а браузер просто вращается.
Я обдумываю только удаление AddHeader, который задает длину контента, потому что, когда я делаю это, все работает нормально, но я беспокоюсь, что я чего-то не понимаю.
Это нормально для меня, чтобы удалить этот AddHeader или я должен найти лучший способ справиться с этой проблемой?
Решение
Измените строку Content-Length на следующую:
Response.AddHeader("Content-Length", someByteArray.Length.ToString())
Другие советы
Ваше приложение СЛЕДУЕТ (прокрутка вплоть до Content-Length), но это не обязательно.
Вот вам достойное обсуждение возможных вариантов.