Получение следующего сообщения при открытии pdf Интернет не может загрузить xyz с abc.com Файл не может быть записан в кэш в IE?

Наше приложение построено на платформе Spring и размещено на WAS 6.1. Он был разработан для Internet Explorer 6 (так как пользователи используют IE 6). Он открывает файл PDF через связь AJAX через контроллер. В фоновом режиме он вызывает mq для получения byte[]. Он записывается в буферизованном потоке вывода ответа.

Он отлично работает в среде разработки и тестирования, но в производственной среде он не всегда работает нормально. Иногда открывается, иногда нет. (Для балансировки нагрузки у нас есть более 1 сервера.)

Иногда строка запроса запроса задается в имени файла, и при попытке сохранить вложение во всплывающем окне появляется следующее сообщение об ошибке:

«Интернет не может загрузить ...... URL-адрес с abc.com. Не удалось записать файл в кэш»

ПФБ код:

    byte[] letterByteArr = null;
    letterByteArr = fetchFromMQ();
    bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
                response.reset();
                response.setContentType(application/pdf);
                response.setHeader(Content-disposition, attachment; filename=LP.pdf);
                int length = letterByteArr.length;
                response.setContentLength(length);                  
                bufferedOutputStream.write(letterByteArr, 0, length);
                bufferedOutputStream.flush();   

Аналогичный фрагмент кода отлично работает в другом приложении, которое работает в другом jvm.

Может ли кто-нибудь предложить возможные решения этой проблемы, если они столкнулись во время реализации вашего кода? Где может быть возможная проблема в WAS, сети, IE или Abode?


person aytramus    schedule 15.09.2011    source источник


Ответы (2)


Это очень похоже на http://support.microsoft.com/kb/812935. Проблема в том, что IE6 не будет загружать PDF-файл, если он обслуживается по протоколу HTTPS вместо HTTP, а заголовки Cache-Control и/или Pragma установлены на no-cache.

Добавьте следующие заголовки ответа:

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "public");
person BalusC    schedule 15.09.2011
comment
Это приложение отлично работает в двух других средах, использующих HTTPS. Причем в производственной среде это происходит с перерывами. Если для заголовков установлено значение no-cache, это не повлияет на все среды? Почему другие среды все еще работают, а в prod иногда открываются? Может ли это быть связано с проблемами, связанными с WAS или сетью? Совет плз. - person aytramus; 15.09.2011
comment
Это настройка конкретного браузера. Просто установите эти заголовки. Это совсем не вредит. Далее действительно не надо ныть с советами плз. Просто оставьте это в стороне и задайте вопрос умным способом (как вы это прекрасно делали, пока я не прочитал совет Plz). - person BalusC; 15.09.2011

Я столкнулся с той же проблемой, и я добавил заголовки ответа, чтобы решить эту проблему. Но мне пришлось удалить response.reset(); ; только после этого проблемы с загрузкой не возникает.

Я не знаю причину этого, но это работает.

Проблема только в том, что данные excel отличаются от данных в pdf-файле в моем приложении.

person Prateek    schedule 30.07.2012