我正在使用 Glassfish 网络服务器来运行我的网站。我仍在开发该网站,我想追踪人们尝试使用该网站的位置。特别是,我希望能够阻止整个非洲和中东地区访问我的网站,以防止欺诈。我还想知道某人的位置,以便向他们展示与他们在网站上的位置相关的内容。例如,如果用户从德克萨斯州达拉斯访问该站点,他将看到德克萨斯州达拉斯的内容。
我正在使用 jsp/Java,并且更喜欢这样的解决方案。
我想这是通过以某种方式将 IP 地址跟踪到某个位置来完成的。
我正在使用 Glassfish 网络服务器来运行我的网站。我仍在开发该网站,我想追踪人们尝试使用该网站的位置。特别是,我希望能够阻止整个非洲和中东地区访问我的网站,以防止欺诈。我还想知道某人的位置,以便向他们展示与他们在网站上的位置相关的内容。例如,如果用户从德克萨斯州达拉斯访问该站点,他将看到德克萨斯州达拉斯的内容。
我正在使用 jsp/Java,并且更喜欢这样的解决方案。
我想这是通过以某种方式将 IP 地址跟踪到某个位置来完成的。
您可以使用JavaScript 中的此 Geo API来检测用户来自哪里并使用window.load
. 我认为这不是正确的方法,因为用户可以在他们的浏览器中阻止 JavaScript 执行。
另一方面,您可以使用MaxMind IP GeoLocation 数据库并使用一些业务逻辑来使用Servlet-Filter和方法检测 IP 地址ServletRequest#getRemoteAddr()
:
@WebFilter("/*")
public class IPFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
String clientIp = req.getRemoteAddr();
if (bannedIp(clientIp) {
response.sendRedirect(request.getContextPath() + "/bannedIp.jsp");
return;
}
chain.doFilter(req, res);
}
private boolean bannedIp(String clientIp) {
//add logic that detects if IP comes from a banned location...
}
}