限制servlet响应

时间:2011-09-24 11:22:08

标签: java java-ee servlets

我有一个Web服务器,它有很多来自自动化机器的点击。这些机器在Web服务器上发送它们的状态以存储在db中。一些命中是无用的,所以我想避免这些请求的响应,因为那些无用的响应会在网络上产生大量的流量。我的问题是“如何限制servlet对不需要的流量的响应。”

3 个答案:

答案 0 :(得分:3)

我会回复一个明智的HTTP 4xx client error。选择哪一个取决于这些请求的“无用”。

如果由于例如缺少参数而导致这些请求不正确,请返回HTTP 400 Bad Request

response.sendError(HttpServletResponse.SC_BAD_REQUEST);

如果由于授权不当而禁止这些请求,请返回HTTP 403 Forbidden

response.sendError(HttpServletResponse.SC_FORBIDDEN);

如果客户端足够聪明,他们将被记录,负责任的管理员/开发人员应该查看它并最终修复它。这是一个双赢的局面。

答案 1 :(得分:2)

如果您不想,您的servlet不会被强制返回任何内容。如果您未返回响应,则将关闭连接,并且不会生成任何流量。

顺便说一下,根据您的场景,可以在客户端(自动化计算机)和Web服务器之间保持持久的HTTP连接。这样您就不需要为每个请求打开一个新连接,并且如果更高的复杂度是值得的话,您可以节省一些字节。

答案 2 :(得分:1)

首先,您应该尝试避免这些请求,请在服务器中尝试exclusion file。如果这不起作用,只需发送禁止(403 status)作为对您标识为“无用”的请求的响应 - 通常是通过扫描user agent header以获取特定机器人。