1

我在某些服务器上部署了一些网页说:

http://myhost/some_secured_file.html

当我在浏览器中访问此文件时,它返回 401 要求我授权自己。

问题是我试图使用 c:import 标记将此页面包含在某个 JSP 页面中。

应用服务器返回:

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

我怎样才能完成包含!?

4

1 回答 1

3

考虑通过另一个 jsp 页面或 servlet 代理请求。然后,您让代理执行验证请求,例如,使用Apache HTTPClient并将该响应的内容写入页面。然后你可以简单地在你的jsp页面上导入你的代理的url。

好吧,考虑以下伪代码作为说明:

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() );
    }
}

这个 servlet 所做的是为您获取安全页面。您需要将此 servlet 挂接到您的 Web 描述符中。这对于映射例如/proxy.jsp请求是必要的。然后您可以在您的 jsp 页面中执行的操作类似于<c:import value="proxy.jsp"/>.

于 2011-02-06T11:55:37.093 回答