Генерируя PDF, ошибку с IE и HTTPS

Я не уверен, работает ли это в 2.0, но поскольку вы используете Java, это может помочь. Я использую его в 1.2.4.

Router.getFullUrl("Controller.action")

Удачи!

Редактировать: я импортирую play.mvc.Router, так что если его нет в 2.0, вы можете найти что-то похожее.

Кроме того, это документация игры 2.0 по маршрутизации, проверьте Обратную маршрутизацию, возможно, это поможет.

http://www.playframework.org/documentation/2.0.1/JavaRouting

12
задан wweicker 11 August 2009 в 03:01
поделиться

7 ответов

После двух недель охоты на диких гусей я не смог найти ни одной комбинации изменений кода, которые позволили бы использовать этот метод потоковой передачи документов PDF, Excel или Word, когда Включена опция « Не сохранять зашифрованные страницы на диск ».

Microsoft заявила, что такое поведение является преднамеренным в ряде статей базы знаний и частных электронных письмах. Похоже, что когда включена опция « Не сохранять зашифрованные страницы на диск », IE ведет себя правильно и выполняет то, что ему велят делать. Этот пост - лучший ресурс, который я нашел до сих пор, в котором объясняется, почему этот параметр должен быть включен, а также плюсы и минусы его включения:

« Не сохранять зашифрованные страницы на диск 'используется при работе с соединениями SSL (HTTPS). Так же, как веб-сервер может отправлять готовую информацию о том, как кэшировать файл, можно настроить Internet Explorer так, чтобы он не сохранял файлы в кеш во время соединения SSL (HTTPS), независимо от того, сообщает ли вам веб-сервер.

Что такое Плюс для включения этой функции, безопасность - это причина номер один, почему эта функция включена. Страницы не хранятся в кэше временных файлов Интернета.

В чем заключается обратная сторона? Низкая производительность, поскольку в кеш ничего не сохраняется, даже если 1-байтовое изображение в формате gif, которое десятки раз использовалось на странице, необходимо каждый раз загружать с веб-сервера. Что еще хуже, некоторые действия пользователя могут потерпеть неудачу, например, загруженные файлы будут удалены, а при открытии PDF-документов будет невозможно указать несколько сценариев ».

Лучшее решение, которое мы можем найти на этом этапе, - сообщить нашим клиентам и пользователям, что существуют альтернативы использованию этого параметра:

«Использовать« Пустую папку временных файлов Интернета при закрытии браузера ». Каждый раз, когда браузер закрывается все файлы будут удалены из кеша при условии, что файл не заблокирован другим экземпляром браузера или каким-либо внешним приложением.

Перед использованием « Не сохранять зашифрованные страницы необходимо внимательно изучить на диск ». Звучит как отличная функция безопасности, но результаты использования этой функции могут привести к увеличению количества обращений в службу поддержки из-за сбоев загрузки или снижения производительности».

2
ответ дан 2 December 2019 в 22:23
поделиться

Какая версия IE? Напомню, что Microsoft выпустила исправление для IE6 для этой проблемы. Надеюсь, это пригодится?

0
ответ дан 2 December 2019 в 22:23
поделиться

Ваш заголовок Cache-Control неверен. Это должно быть Cache-Control: max-age = 1 с тире посередине. Попробуйте сначала исправить это, чтобы увидеть, имеет ли это значение.

Обычно я бы сказал, что наиболее вероятным виновником является ваш заголовок Vary, поскольку такие заголовки часто вызывают проблемы с кешированием в IE: http: // blogs. msdn.com/ieinternals/archive/2009/06/17/9769915.aspx . Вы можете попробовать добавить ETAG в заголовки ответов.

Fiddler не должен влиять на кэшируемость (если вы не написали правила), и похоже, что вы говорите, что это так, что говорит о том, что, возможно, существует какая-то проблема с синхронизацией.

> Не сохранять зашифрованные страницы на диск. Параметр безопасности, который раньше был отключен по умолчанию

Этот параметр имеет значение , по-прежнему отключен по умолчанию (в IE6, 7 и 8), хотя ИТ-администраторы могут включить его через группу Policy, и некоторые крупные компании это делают.

Между прочим, причина, по которой вы видите ошибку сертификата при запуске Fiddler, заключается в том, что вы не выбрали доверять корневому сертификату Fiddler; см. http://www.fiddler2.com/fiddler/help/httpsdecryption.asp для получения дополнительной информации по этой теме.

3
ответ дан 2 December 2019 в 22:23
поделиться

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

0
ответ дан 2 December 2019 в 22:23
поделиться

попробуйте отключить сжатие gzip.

0
ответ дан 2 December 2019 в 22:23
поделиться

Мы уже давно сталкивались с подобной проблемой - мы сделали то, что сделали мы (это Java EE). В конфигурации веб-приложения мы добавляем

<mime-mapping>
    <extension>PDF</extension>
    <mime-type>application/octet-stream</mime-type>
</mime-mapping>

Это заставит любой PDF-файл, исходящий из вашего веб-приложения, загружаться вместо того, чтобы браузер пытался отобразить.

РЕДАКТИРОВАТЬ : похоже, вы его передаете. В этом случае вы будете использовать mime-тип как application / octet-stream в своем коде, а не в config. Итак, здесь вместо

Response.ContentType = "application/pdf"

вы будете использовать

Response.ContentType = "application/octet-stream"
1
ответ дан 2 December 2019 в 22:23
поделиться

Я обнаружил, что это, кажется, работает для меня:

Dim browser As System.Web.HttpBrowserCapabilities = Request.Browser
If (browser.Browser = "IE") Then
  Response.AppendHeader("cache-control", "private") ' ie only
Else
  Response.AppendHeader("cache-control", "no-cache") ' all others (FF/Chrome tested)
End If
1
ответ дан 2 December 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: