2

我想用

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

从我的应用程序中向 servlet 发送特殊请求(使用嵌入式 Jetty 服务器)。Servlet 如何检测到请求来自 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 回答