如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue

这篇具有很好参考价值的文章主要介绍了如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、获取真实IP

方式1、前端调用免费公共接口获取

前端获取访问者的真实的外网ip,可以通过调用接口https://api.ipify.org/来获取。你也可以直接在网页上访问它来看自己的外网ip。

ipify介绍:
ipify是一个免费的公共 API,用于获取设备的公共 IP 地址。它通过查询服务器获取用户的 IP 地址,并将其返回给用户。
ipify的工作原理是通过查询公共的 DNS 服务器来获取用户的 IP 地址。当用户向ipify发送请求时,ipify会查询 DNS 服务器,并将查询结果返回给用户。这个查询结果就是用户的公共 IP 地址。
ipify的主要用途是在需要获取用户 IP 地址的应用程序中使用。例如,一些网站可能需要获取用户的 IP 地址来进行地理位置定位、访问控制或其他目的。使用ipify可以简化这个过程,因为它提供了一个简单的 API 来获取用户的 IP 地址。
要使用ipify,只需向其发送一个 HTTP 请求,并在请求的 URL 中包含?format=json参数。ipify将返回一个包含用户 IP 地址的 JSON 数据结构。如下:

{
  "ip": "192.168.1.1"
}

方式2、服务端获取(在请求头中。。?)

router.get("/", async function (req, res, next) {
    //在请求头中获取访问者的真是ip
    let ip = req.headers['x-forwarded-for'] ||
	req.connection.remoteAddress ||
	req.socket.remoteAddress ||
	req.connection.socket.remoteAddress ||
	'';
  console.log(ip,'<--ip');
  // 判断访问的ip是不是ipv6,如果是则转换成ipv4,否则直接使用
  // 通过正则判断是否是ipv6
  var ipv6Reg = /:/g;
  let ipv4 = ip;
  if(ipv6Reg.test(ip)){
     ipv4 = ipv6ToV4(ip);
  }
  res.send(await getIpService(ipv4))
});
function ipv6ToV4(ip) {
	//用来转换ipv6为ipv....
	return ip
}

注意:如果是本地调试,(手机和电脑同一个wifi,手机访问电脑ip+服务),这样获取到的是你的局域网ip,你可以通过方式一调用免费公共接口获取外网请求的真实ip,或将应用部署到云服务进行调试。上面是当你项目上线后的后端获取ip的方式。

注:如果是前后端分离的项目,前端请求由nginx转发到后端服务,则需要在nginx代理中配置ip携带,nginx配置如下:

server {
        listen 80;
 
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#指定后端服务器地址
            proxy_pass http://backend_server;
        }
    }

在这个配置中:

proxy_set_header Host $host;: 将原始请求的Host头信息转发到后端服务器。

proxy_set_header X-Real-IP $remote_addr;: 将客户端的IP地址放入X-Real-IP头信息中。

proxy_set_header X-Forwarded-For KaTeX parse error: Double subscript at position 12: proxy_add_x_̲forwarded_for;:…proxy_add_x_forwarded_for变量会检查现有的X-Forwarded-For头,如果存在,会将$remote_addr追加到列表后面。

proxy_pass http://backend_server;: 指定后端服务器地址。

后端服务器应用程序需要配置以读取这些头信息以获取原始客户端的IP地址。

二、获取地理位置信息

腾讯位置服务:https://lbs.qq.com/
也可取高德或百度,他们的操作都大同小异。注册成功后,去控制台—我的应用–创建应用 你可以获取到一个key 如下图:
如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue,tcp/ip,vue.js,网络协议,node.js,express
创建应用,如需添加白名单,要全部允许0.0.0.0/0。注意要保护好自己的key,,然后根据据接口文档,传入之前获取的真实的外网ip就行了。文章来源地址https://www.toymoban.com/news/detail-840177.html

到了这里,关于如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vue】前端获取用户真实IP地址 (外网IP地址)

    1. 打开index.html !-- 引入JS -- script src=\\\"http://pv.sohu.com/cityjson?ie=utf-8\\\"/script  2. 获取IP  let IP = returnCitySN[\\\"cip\\\"]; localStorage.setItem(\\\'ip\\\',IP);  完整代码:

    2024年02月16日
    浏览(41)
  • 通过 Request 请求获取真实 IP 地址以及对应省份城市

    title: 通过 Request 请求获取真实 IP 地址以及对应省份城市和系统浏览器信息 date: 2022-12-16 16:20:26 tags: GeoIP2 UserAgentUtils categories: 开发实践 cover: https://cover.png feature: false 代码如下,这里的 CommonUtil.isBlank() 为封装的判空方法 1、首先,获取 X-Forwarded-For 中第 0 位的 IP 地址,它在

    2024年02月01日
    浏览(38)
  • Java中使用HttpRequest获取用户真实IP地址端口

    获取请求来源ip代码: 获取请求来源端口代码:

    2024年02月11日
    浏览(53)
  • 【SpringBoot】SpringBoot获取不到用户真实IP怎么办

    项目部署后发现服务端无法获取到客户端真实的IP地址,这是怎么回事呢?给我都整懵逼了,经过短暂的思考,我发现了问题的真凶,那就是我们使用了Nginx作的请求转发,这才导致了获取不到客户端真实的IP地址,害,看看我是怎么解决的吧! 客户端请求数据时走的是Nginx反

    2024年02月12日
    浏览(28)
  • centos 安装 nginx配置ssl 和 获取用户真实ip

    安装所需环境 nginx 是用 C语言开发的,建议在Linux上使用,如果是windows用户,也可以使用windows版本。 一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果有 gcc 环境,则不需要安装,命令: yum install gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compatible

    2024年02月13日
    浏览(29)
  • 后端nginx使用set_real_ip_from获取用户真实IP

             随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址. 官方说明: Module ngx_http_realip_module          realip模块的作用是:当

    2024年04月11日
    浏览(30)
  • nginx如何获取真实客户端ip

    nginx作为反向代理服务器,即代理我们的服务端,下面介绍下如何配置nginx获取真实的客户端ip 1、配置nginx.con 2、在java程序中可以通过如下方式获取: 这样就可以打印出真实ip了!即request.getHeader(\\\"X-Real-IP\\\")的值 引用: 查看端口占用及释放所占用的端口_查询谷歌浏览器的端口

    2024年02月11日
    浏览(40)
  • 【安全知识】——如何绕过cdn获取真实ip

    作者名:白昼安全 主页面链接: 主页传送门 创作初心: 以后赚大钱 座右铭: 不要让时代的悲哀成为你的悲哀 专研方向: web安全,后渗透技术 每日鸡汤: 现在的样子是你想要的吗? cdn简单来说就是 通过不同地理位置的缓存来加快访问速度 ,所以我们有可能访问的网页

    2024年02月02日
    浏览(39)
  • SpringBoot如何通过Nginx代理获取真实IP

    springboot作为后台代码,获取到的登录IP是前台的代理服务器地址,并不是用户的真实IP地址,让我们在做统计的时候无从下手。下面是一个后台获取IP地址的类,本质上没有什么问题,问题在于,Nginx给你的就是一个代理之后的地址,所以你当然获取不到真实的地址了。 那么如

    2024年01月17日
    浏览(38)
  • 学习NodeJs之【如何获取客户端真实IP】

            产品想要增加一个操作日志的模块,重点记录增删改的操作ip。         这块业务其实需要按【是否代理】来分逻辑。首次开发时,并未考虑  测试生产环境有统一代理  ,导致传统的获取ip方式取到了容器网关ip。——显然这样是无法满足产品想要区分操作

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包