关于获取客户端公网IP问题

在这篇博客前,觉得自己好尴尬,因为我项目框架用的是play,之前在有个需求需要获取客户端的IP,在本人的上一篇文章中(http://blog.csdn.net/qq616138361/article/details/78032882),就曾写过如何获取,然后尴尬的是,测试时,获取的确实是公网的IP,但是获取的竟然是公司公网的IP有木有!!!从而导致项目在线上才发现获取的IP地址是服务器的公网IP,苦逼的又改了一遍,本次特地把本人服务器映射外网测试了一遍,没问题,以下代码奉上!在这向某些看过上一篇文章的道友们道歉了!不多说,以下是代码:


/**
* 获取请求的ip地址
* @return
*/
public static String getIp() {
Request request = Request.current();

if(null == request) {
return Constants.LOCALHOST_IP;
}

return StringUtils.isBlank(request.remoteAddress.toString()) ? Constants.LOCALHOST_IP : request.remoteAddress.toString();
}



就这么几行代码,有木有!!!我都要哭了。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在客户端使用 JavaScript 代码获取公网 IP 地址,可以通过向一个公共的 IP 地址查询服务发送请求来实现。其中比较常用的是 http://ip-api.com/json。这个服务会返回一个包含客户端公网 IP 地址的 JSON 对象,其中还包括了其他一些与 IP 地址相关的信息。 以下是一个获取客户端公网 IP 地址的示例代码: ```javascript $.get("http://ip-api.com/json", function(response) { console.log(response.query); // 输出客户端公网 IP 地址 }, "jsonp"); ``` 需要注意的是,由于浏览器的同源策略限制,上述代码只能在与 `http://ip-api.com` 同源的页面中执行,或者使用 JSONP 跨域请求。同时,这个服务也有一定的访问频率限制,如果需要大量访问,可以考虑使用其他类似的服务。 ### 回答2: 使用$.get获取客户端公网IP地址的方法可以通过向IP地址查找的API发起GET请求来实现。 首先,我们可以使用以下代码来实现GET请求获取公网IP地址的功能: ```javascript $.get("https://api.ipify.org?format=json", function(response) { var publicIP = response.ip; console.log(publicIP); }); ``` 在这个代码中,我们通过向`https://api.ipify.org?format=json` 发送GET请求来获取公网IP地址。API返回的响应中包含了一个`ip`字段,我们可以通过访问`response.ip`来获取公网IP地址。 然后,我们可以将获取到的公网IP地址打印到控制台上。以上述代码为例,`console.log(publicIP)` 将打印公网IP地址。 需要注意的是,由于涉及到跨域问题,可能需要在服务器端进行CORS(跨域资源共享)设置,以确保获取公网IP地址的请求能够成功返回。 总结起来,我们可以通过上述代码使用$.get方法来获取客户端公网IP地址,并将其打印到控制台上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值