Я считаю, что вы должны разрешить IIS обслуживать статические файлы. У вас может быть HttpModule (или ваш фильтр), передающий управление обратно в IIS - это означает, что может потребоваться репликация кода обеспечения безопасности. Еще один подход может заключаться в том, чтобы вернуть управление сервером приложений IIS для обслуживания файла (проверка безопасности, конечно же, должна была произойти раньше). Или, наконец, как указано вами, ваш сервер приложений может вводить заголовки ответов, а затем httpmodule их считывает и передает управление IIS. Не уверен насчет java, но в .NET вы можете использовать метод HttpResponse.TransmitFile для передачи управления IIS - при этом не нужно создавать файл HttpModule для обслуживания.
Наконец, для кэширования вы всегда можете генерировать заголовки кеша в ответ на пониженный уровень (кэширование на стороне прокси или на стороне клиента). Если файлы меняются, вы можете добавить зависимости файлов и т. Д.
РЕДАКТИРОВАТЬ: Не уверен, что это сработает для вас. Создайте обработчик http (ashx) и отметьте его как требуемый SSL в IIS. Все медиафайлы будут обслуживаться этим обработчиком. Обработчик примет файл, который будет служить параметром запроса. Теперь вы можете передать некоторый идентификатор файла или зашифрованный частичный путь (относительно настроенного базового пути к хранилищу файлов), чтобы фактическое имя файла или пути не были видны пользователю. Вы даже можете сделать токены, срок действия которых истечет через некоторое время (по сути, добавить идентификатор файла и метку времени и зашифровать его), чтобы пользователь не мог повторно запросить тот же файл с тем же параметром. Псевдокод для обработчика будет
void ProcessRequest(HttpContext context)
{
// read file id/name token
var token = context.Request["q"];
// validate/decrypt token etc and get the actual path for file to be served
string filePath;
// set needed response headers - content-type, content-disposition and cache related
...
// ask IIS to serve the file
context.Response.TransmitFile(filePath);
}
person
VinayC
schedule
13.12.2010