laravel ajax ip,Laravel 5.6 获取用户真实 IP 地址
这几天开发遇到这样一个问题,使用laravel 框架自带的 $reqeust->ip(); 方法获取到的客户端 ip 地址不准确,所以我就在网上查了一些方法看如何解决,有写的好的大神,讲的非常的详细,这里我就不照搬人家的东西了,感兴趣的小伙伴可以自己去看一下这里是具体地址:Laravel中获取真实ip - 简书 也是简书的一位书友写的。本着实用至上,我就略过具体的知识点直接讲我遇到的问题..
这几天开发遇到这样一个问题,使用laravel 框架自带的 $reqeust->ip(); 方法获取到的客户端 ip 地址不准确,所以我就在网上查了一些方法看如何解决,有写的好的大神,讲的非常的详细,这里我就不照搬人家的东西了,感兴趣的小伙伴可以自己去看一下这里是具体地址: Laravel中获取真实ip - 简书 也是简书的一位书友写的。
本着实用至上,我就略过具体的知识点直接讲我遇到的问题和如何解决的:
1,获取 IP 地址不准的原因:
答:因为我的项目服务器使用了 cloud flare 的节点加速,这样不同地区访问的我项目的时候,我如果直接使用 laravel 自带的 $request->ip(); 获取到的 IP 地址其实是 cloud flare 加速节点的地址,例如中国区的加速节点地址就是 198.42.129.0/22 (假的,举例) 这个范围的 IP 地址,而不是来自中国区真正的 IP 地址。
2,laravel >=5.5* 框架中如何解决这个问题?
答:此套配置只对 laravel 版本大于 5.5 的项目有用,我获取到了我的 cloud flare 加速节点所有地址的节点 ip 地址范围:
然后我们到项目的中间件目录里面找到这个类文件:
app/Http/Middleware/TrustProxies.php
修改里面的这个类属性:protected $proxies;
如图所示,我们把 cloud flare 加速节点的地址都放到一个数组里然后赋值给 $proxies 属性,这样我们再次使用 $request->ip() 方法获取客服端 ip 地址的时候就不会获取到加速节点的 ip 地址了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)