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