gpt4 book ai didi

servlets - 检查请求来自的域或 IP?

转载 作者:行者123 更新时间:2023-12-02 21:34:31 26 4
gpt4 key购买 nike

我有一个 servlet,是否可以检查请求是否来自特定域(例如“example.com”)?

public abstract class MyServlet extends HttpServlet {

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
if (didOriginateFrom("example.com", req)) {
// ok to process
}
}
}

我有一台服务器将一些工作卸载到辅助服务器(上面),只是想确保它只处理来 self 的主服务器的请求,

谢谢

最佳答案

以下方法为您提供发出请求的客户端主机的信息。

  • HttpServletRequest.getRemoteAddr()
  • HttpServletRequest.getRemoteHost()

这是您要查找的代码:

boolean didOriginateFrom(Sting host, HttpServletRequest req) {
return req.getRemoteHost().contains(host);
}

上述两种方法都提供有关客户端或发送请求的最后代理地址的信息。

尽管请求是通过多个代理发出的,但某些服务器可能会返回原始客户端地址。代理通过添加 X-Forwarded-For 将直接客户端的地址发送到服务器。 header 。因此,某些服务器可能会处理 X-Forwarded-For header 值并返回原始客户端地址。

以下是X-Forwarded-For的方法请求 header 可能看起来

X-Forwarded-For : originalclient, proxy1, proxy2, lastproxy

关于servlets - 检查请求来自的域或 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com