Безопасно ли использовать Server.Transfer () для передачи запроса в статическое изображение (.jpg, .png и т. Д.)? - PullRequest
2 голосов
/ 08 февраля 2011

У меня есть класс, который реализует IHttpHandler, который предназначен для обработки запросов на изменение размера изображения. Он обрабатывает URL-адреса, как так

http://mysite.com/imageHandler?image=myimg.jpg&width=100&height=100

В настоящее время обработчик ищет файл myimg.jpg на диске, вырезает миниатюру 100x100 (если она еще не существует) и перенаправляет клиента на миниатюру следующим образом:

Response.RedirectPermanent("/some/virtualPath/to/thumbnail.jpg");

Это прекрасно работает, но я бы не хотел заставлять клиента выдавать второй HTTP-запрос. Безопасно ли делать следующее?

Server.Transfer("/some/virtualPath/to/thumbnail.jpg")

Вся документация MSDN говорит об использовании Server.Transfer () для перенаправления на страницу aspx, поэтому я не уверен, что это правильно или нет.

Спасибо

1 Ответ

3 голосов
/ 08 февраля 2011

Ну, на странице MSDN прямо сказано:

Страница, на которую нужно перенести, должна быть другой страницей .aspx.Например, передача на страницу .asp или .asmx недопустима.

Таким образом, даже если может работать, это не "безопасно" в том смысле,можете положиться на эту функцию.Вы нарушаете контракт , используя не-aspx страницу, поэтому теоретически метод может вести себя произвольно.

Безопасное решение вашей проблемы - отправка миниатюры наклиент использует соответствующие методы объекта Response, такие как BinaryWrite (если миниатюра изображения находится в памяти) или TransmitFile (если изображение находится на диске).В этом случае не забудьте правильно установить заголовок HTTP (Response.ContentType = "image/jpeg"), чтобы сообщить клиенту, что это изображение jpg.Дополнительным преимуществом этого метода является то, что ваши файлы миниатюр не обязательно должны находиться в общедоступном каталоге вашего веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...