2

使いたい

LocalConnector.getResponses( "POST /myservlet/SpecialRequest HTTP/1.0\r\nContent-Length: x\r\n\r\n<content>\r\n\r\n" );

アプリケーション内からサーブレットに特別なリクエストを送信します (組み込みの Jetty サーバーを使用します)。サーブレットは、リクエストが外部ソースではなく LocalConnector からのものであることをどのように検出できますか?

doPost メソッドには、パラメーターとして HttpServletRequest および HttpServletResponse オブジェクトのみがあります。

Jetty 9.2.4 および Servlet 3.1 API の使用。

4

1 に答える 1

1

コネクタを識別する方法はないと判断しましたが、リクエストの中を見ると、0.0.0.0 とポート 0 の値がいくつかありますが、これは外部リクエストには当てはまらないと確信しています (ローカルホストのリクエストでも 127.0 として表示されます)。 .0.1)。

LocalAddr = 0.0.0.0
LocalName = 0.0.0.0
LocalPort = 0
ServerName = <a real ip>
ServerPort = 80
RemoteAddr = 0.0.0.0
RemoteHost = 0.0.0.0

ServerName と ServerPort が偽物です - ポート 80 にコネクタがなく、リクエスト ログに次のように表示されます

0.0.0.0 - - [21/Nov/2014:11:20:56 -0500] "POST /myservlet/SpecialRequest HTTP/1.0" - 0 "-" "-" "-"

これは ServerName と一致しません。

結論: LocalAddr と RemoteAddr が 0.0.0.0 の場合、要求は LocalConnector からの内部です。

この回答が次の人に役立つことを願っています-そして、その機能を指摘してくれた他のLocalConnectorの質問を投稿した人に感謝します!

于 2014-11-21T16:49:14.820 に答える