vue中使用接口(搜狐接口)获取访客IP地址

花了1天时间踩坑,终于探索出来了最方便的解决方式。。
网上大部分大厂的获取ip的方式都已不可用,只有搜狐接口还有一些小网站搞出来的接口能用。这里我使用的是搜狐获取IP的接口
搜狐接口返回的是一个js变量,类似下面格式:

var returnCitySN = {"cip": "XXX.XXX.XXX.XXX", "cid": "100000", "cname": "北京市"};

html文件访问

直接引用js文件就行

<html>
<body>
	<div class="center" id="ip"></div>
	<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
	<script type="text/javascript">
		<!-- document.write(returnCitySN["cip"]+','+returnCitySN["cname"]) -->
		var words = returnCitySN["cname"]+': '+returnCitySN["cip"];
		document.getElementById('ip').innerHTML = words;
	</script>
</body>
</html>

错误使用方式

1、在后端直接获取接口数据

最开始我就是用的这种方式,获取接口数据后再将处理后的数据返回给前端 。直到我把项目放到云服务器后,才发现后端获取的接口数据其实是服务端的ip,并不是客户端的ip。

2、在vue项目中引用js文件

像我上面写的html使用方法一样,使用两个script标签,导入js文件。
毫无疑问报错了。
报错原因:vue是单页面应用,不能使用两个script标签

3、前端使用axios访问接口,将数据传到后端处理

使用axios访问接口,具体方法这里不再赘述。结果就是和第1条的结果一样,接口返回的数据是服务端的ip,并不是客户端的ip。

正确使用姿势

在项目中的index.html文件导入js文件

    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
    <script type="text/javascript">
      var Ip=returnCitySN['cip']
      var cityname=returnCitySN['cname']
      localStorage.setItem('Ip', Ip)
    </script>

其中最重要的是localStorage.setItem(‘key’,A)函数,关于这个函数,百科是这样说的:

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

setItem可以将变量A存储到key字段,这样我们就可以在index.html文件导入后,在全局使用这个变量:

let strIp:string=String(localStorage.getItem('Ip'))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值