Включить некоторую страницу, которая возвращает 401 - PullRequest
1 голос
/ 06 февраля 2011

У меня есть какая-то веб-страница, развернутая на каком-то сервере, например:

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

Как мне выполнитьвключают в себя!

1 Ответ

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

Рассмотрите возможность передачи запроса через другую страницу 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"/>.

...