2011-02-06 8 views
1

を返すいくつかのページを含めます。は、私はいくつかのサーバーに展開いくつかのWebページは言うてきた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 

+0

資格情報が必要ですか? –

+0

はい資格がありました –

答えて

3

別のJSPページまたはサーブレットを使用してリクエストをプロキシすることを検討してください。次に、プロキシに、たとえば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()); 
    } 
} 

何このサーブレットがすることはあなたのためのセキュリティで保護されたページの取得です。このサーブレットをあなたのウェブ記述子にフックする必要があります。これは、例えば/proxy.jsp要求をそれにマッピングするために必要です。あなたのJSPページでできることは、<c:import value="proxy.jsp"/>のようなものです。

関連する問題