1

Same Origin ポリシーに対抗するために、AJAX 要求が他の場所から XML を取得するためのプロキシ サーバーとして機能する Java サーブレットを作成しました。

問題は、HTTP エラー応答がクライアント側に返されず、代わりに例外としてキャッチされ、ログに記録されることです。

サーブレットが404、500などであるかどうかにかかわらず、サーブレットが見つけたものを強制的に返すにはどうすればよいですか.

これは私のログの例です

java.io.IOException: Server returned HTTP response code: 500 for URL: 

または java.io.IOException: Server returned HTTP response code: 403 for URL:

これが私のコードです:

String url = "http://www.test.com/test.xml";
URL kcim = new URL(url);


        URLConnection kciconn = kcim.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(kciconn.getInputStream()));
        String inputLine;
        PrintWriter out = kciResponse.getWriter();

        while ((inputLine = in.readLine()) != null)
        {
            //output to client
            out.println(inputLine);

        }

    //close output stream
    System.in.close();
    in.close();

要約すると、サーブレットが HTTP エラー コードを受信すると、それ自体が壊れてしまい、アクセスされているリソースからの真の HTTP コードではなく、サーブレットから HTTP 500 サーバー エラーが発生します。

サーブレットが壊れるのを止めて、サーブレットが返すものを強制的に返すにはどうすればよいですか?

ありがとう

4

2 に答える 2

1
  1. URLConnection の代わりに HttpURLConnection を使用する
  2. プロキシ サーブレットで、例外が発生したかどうかにかかわらず、次を呼び出します。

    response.setStatus(httpURLConnection.getResponseCode());

乾杯:^)

于 2013-04-18T04:48:54.663 に答える