我在某个服务器上部署了一些网页说:
http://myhost/some_secured_file.html
当我在浏览器中访问此文件时,它返回401,要求我自己授权。
问题是我试图使用c:import标记将此页面包含在某个JSP页面中。
app服务器返回:
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 :(得分: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的作用是为您获取安全页面。您需要在Web描述符中挂起此servlet。这对于例如/proxy.jsp
请求映射是必要的。您在jsp页面中可以执行的操作类似于<c:import value="proxy.jsp"/>
。