Spring mvc: доступ ресурсов к внешней папке - PullRequest
4 голосов
/ 07 ноября 2011

Я храню медиафайлы (изображения и фильмы) в папке (например, C: \ test \ tes.png), и я пытаюсь получить доступ к изображениям с помощью URL-адреса, например: http://localhost:8080/app/picture/test.png. Для этого, я использовал тег ресурсов (весна 3), как показано ниже:

<mvc:resources mapping="/picture/**" location="file:/test" />

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

Запрошенный ресурс не найден

У меня в логах:

2011-11-07 20: 48: 55,241 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet- DispatcherServlet с именем 'Family' обрабатывает запрос GET для [/Family/photos/testImage2.png] 2011-11-07 20: 48: 55,241 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping- Соответствующие шаблоны для запроса [/photos/testImage2.png]: [/ **] 2011-11-07 20: 48: 55,241 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - URIШаблонные переменные для запроса [/photos/testImage2.png]: {} 2011-11-07 20: 48: 55,242 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Сопоставление [/photos/testImage2.png] с HandlerExecutionChain с обработчиком [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@3a779f5e] и интерцепторами 4: 4: 455 242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - Последнее изменение значения для [/Family/photos/testImage2.png]: -1 2011-11-07 20: 48: 55,242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView возвращается в DispatcherServlet с именем 'Family': предполагается, что HandlerAdapter завершил обработку запросаorg.springframework.web.servlet.DispatcherServlet - успешно выполненный запрос

Я, конечно, не все понимаю ...

Другой вопрос: я не уверен, что это хороший подход,Какие есть другие решения для доступа к медиафайлам во внешней папке?

Заранее спасибо!

1 Ответ

3 голосов
/ 08 ноября 2011

Первый вопрос: «сопоставление»

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

<mvc:resources mapping="/picture/**" location="file:/test/" />

Еще один вопрос: я не уверен, что это хороший подход.Какие есть другие решения для доступа к медиафайлам во внешней папке?

По моему скромному мнению, очень плохо предоставлять пользователю веб-сайта полный доступ для чтения к папке.Внимание, доступ не ограничивается только папкой, но пользователь также может получить доступ ко всем подпапкам.

* И даже если вы решили проигнорировать это предупреждение, вы должны проверить, что произойдет, если кто-то используетinvoke http://localhost:8080/app/picture/../someFile. ** Я не знаю, что произойдет, но ** на 120% уверен, что никто не сможет получить доступ к какому-либо файлу вне папки picture!- Я посмотрел на реализацию пружины, и кажется, что пружина уже справилась с этой проблемой. * Начиная с Spring 3.2.12, 4.0.8, 4.1.2, обработчик ресурсов должен убедиться, что выне получить доступ к папке за пределами указанной папки ресурсов.( SPR-12354: обход каталога со статической обработкой ресурсов (CVE-2014-3625) )

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