Я имею дело со странной ошибкой, которая воспроизводима только в производственной среде через соединение https. Во-первых, я пытаюсь загрузить файл * .cvs, мой код поддержки выглядит следующим образом:
ExternalContext externalContext = facesContext.getExternalContext();
try (OutputStream outputStream = externalContext.getResponseOutputStream()) {
String exportFileName = exportHandler.getExportFileName();
String contentType = externalContext.getMimeType(exportFileName);
externalContext.responseReset();
externalContext.setResponseCharacterEncoding(CHARSET);
externalContext.setResponseContentType(contentType);
externalContext.setResponseHeader("Content-disposition", "attachment; filename=\"" + exportFileName + "\"");
int length = exportHandler.writeCsvTo(outputStream); // with a BufferedWriter the lines are written and the bytes are summed up.
externalContext.setResponseContentLength(length);
outputStream.flush();
}
facesContext.responseComplete();
Все отлично работает через соединение http или на localhost (даже https на localhost работает), но в работе через соединение https разные веб-браузеры выдают разные сообщения об ошибках. Chrome выдает следующее сообщение: «Возможно, веб-страница в ... временно отключена или она постоянно перемещена на новый веб-адрес. ERR_HTTP2_PROTOCOL_ERROR» В загрузке Firefox начинает загружаться, а затем ничего не происходит, поскольку это происходит вечно. В разделе IE: «Соединение с веб-сайтом было сброшено. Код ошибки: INET_E_DOWNLOAD_FAILURE»
Я бы сказал, что это связано с длиной содержимого ответа, поскольку я не уверен, что он мне все еще нужен после написания выходного потока. Заголовок ответа выглядит следующим образом:
- Соединение: keep-alive
- Расположение содержимого: вложение; filename = "test.csv"
- Content-Type: text / csv; charset = ISO-8859-15
- Дата: понедельник, 04 мая 2020 г. 10:16:41 GMT
- Кодирование передачи: chunked
Не знаю, почему заканчивается насколько я знаю, это мой ответ с помощью фрагментированной кодировки передачи, которая может происходить только в том случае, если длина контента не установлена. Любое тело имеет какие-либо идеи, я пропускаю некоторые ограничения заголовка в моем ответе, такие как установка контроля кэша?