Java « как перенаправить request на URL из другого контекста?
Ситуация такая. Пользователь запрашивает URL1.
На нем в сервлете делаем проверку на права, и перенаправляем запрос на другой сервер, там находится PDF файл.
req.getRequestDispatcher(...).forward(req, res); не катит т.к этот файл находится в другом контексте, или вообще домене.
Это нужно т.к на другом сервере PDF файл будет генерироваться на лету, и храниться в кэшэ, адрес PDF документа будет состоять из уникального ключа(MD5 наверное) но никто эти адреса документов не знает.
Получается весь процесс для пользователя прозрачен, он не знает что происходит в сервлете.
Делать res.sendRedirect нельзя так как адрес сервера и пути должны быть засекречены, а если делать sendRedirect то они посылаются обратно браузеру.
Кто сталкивался с похожей проблемой?
На нем в сервлете делаем проверку на права, и перенаправляем запрос на другой сервер, там находится PDF файл.
req.getRequestDispatcher(...).forward(req, res); не катит т.к этот файл находится в другом контексте, или вообще домене.
Это нужно т.к на другом сервере PDF файл будет генерироваться на лету, и храниться в кэшэ, адрес PDF документа будет состоять из уникального ключа(MD5 наверное) но никто эти адреса документов не знает.
Получается весь процесс для пользователя прозрачен, он не знает что происходит в сервлете.
Делать res.sendRedirect нельзя так как адрес сервера и пути должны быть засекречены, а если делать sendRedirect то они посылаются обратно браузеру.
Кто сталкивался с похожей проблемой?
1 ответов
Возможно следующее - запросить самостоятельно у другого сервера PDF, а потом из сервлета вернуть полученный ответ. Это достаточно легко сделать через URLConnection.
Документация:
http://http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLConnection.html
Примерчики:
http://code.google.com/intl/ru/appengine/docs/java/urlfetch/usingjavanet.html#Redirects
http://www.java2s.com/Code/JavaAPI/javax.net/URLConnectiongetInputStream.htm
Надеюсь помог)))