2011-02-06 1 views
1

Я некоторые веб-страницы размещены на каком-то сервере сказать:Включить некоторую страницу, которая возвращает 401

http://myhost/some_secured_file.html

, когда доступ к этому файлу в браузере он возвращает 401 просит меня разрешить себе.

Проблема заключается в том, что я пытаюсь включить эту страницу в некоторую страницу JSP, используя тег c: import.

В приложение-сервер возвращает:

javax.servlet.jsp.JspException: Problem accessing the absolute URL "http://myhost/some_secured_file.html". java 
    .io.IOException: Server returned HTTP response code: 401 for URL: http://myhost/some_secured_file.html 

Как я могу выполнить включаемые !?

+0

У вас есть учетные данные? –

+0

ДА У меня были полномочия –

ответ

3

Рассмотрите проксирование запроса через другую страницу jsp или сервлет. Затем вы позволяете прокси выполнять запрос аутентификации, например, используя Apache HTTPClient, и иметь содержимое этого ответа, записанного на страницу. Затем вы можете просто импортировать URL-адрес своего прокси-сервера на странице jsp.

Хорошо, рассмотрят следующий псевдокод в разъяснении:

class Proxy extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     // Perform a new request to get contents from secured page 
     HttpClient client = new HttpClient(); 
     Credentials credentials = new UsernamePasswordCredentials("user", "pass"); 
     client.getState().setCredentials(authScope, credentials); 
     GetMethod method = new GetMethod("/secure_page.jsp"); 
     client.executeMethod(client.getHostConfiguration();, method); 

     // write result to the outputstream 
     resp.getWriter().write(method.getResponseBodyAsString()); 
    } 
} 

Что этот сервлет делает выборку обеспеченной страницы для вас. Вам нужно подключить этот сервлет в своем веб-дескрипторе. Это необходимо для отображения, например, запроса /proxy.jsp. То, что вы тогда можете сделать на своей странице jsp, - это что-то вроде <c:import value="proxy.jsp"/>.

Смежные вопросы