我有一个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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一台服务器可以将一些工作转移到辅助服务器上(上面),只是想确保它只处理来自我的主服务器的请求,
谢谢
以下方法为您提供发出请求的客户端主机的信息。
HttpServletRequest.getRemoteAddr()HttpServletRequest.getRemoteHost()这是您正在寻找的代码:
boolean didOriginateFrom(Sting host, HttpServletRequest req) {
return req.getRemoteHost().contains(host);
}
Run Code Online (Sandbox Code Playgroud)
上述两种方法都提供有关客户端或发送请求的最后代理地址的信息。
尽管请求是通过多个代理发出的,但某些服务器可能会返回原始客户端地址。代理通过添加X-Forwarded-For标头将直接客户端的地址发送到服务器。因此,某些服务器可能会处理X-Forwarded-For标头值并返回原始客户端地址。
以下是X-Forwarded-For请求标头的外观
X-Forwarded-For : originalclient, proxy1, proxy2, lastproxy
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |