添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
温柔的上铺  ·  [Pyplot] ...·  5 月前    · 


今天在项目中遇到一个前端唯一标示的问题,特此记录一下。

项目的系统架构如下:

前端唯一标识问题_客户端


整个网络环境分为内网环境和外网环境两个部分,内网的用户客户端1和客户端2通过双网卡前置机的代理访问外部公网环境的网站,外网环境的客户端3和客户端4直接访问外网的网站。

网站中有个界面只允许内网用户访问,如何解决?(访问该页面时,Web会进行一个自动登录操作,如果登录成功了则正常获取页面数据进行显示)

方法一:后台对该界面增加IP地址过滤

由于内网用户发起的网络请求通过Nginx代理最后都是以相同的IP请求服务器,所以后台可以增加IP地址白名单,如果请求IP是前置机的公网IP,则返回登录成功,允许访问该页面,如果不是白名单中的IP,则返回登录失败,不允许访问该页面。

方法二:前端发起网络请求时增加唯一标识
在原生Android App中,我们经常使用设备IP地址、MAC地址等等作为移动设备的唯一标识,或者通过短信验证等方式,所以团队中有人提出了方案二。虽然方案二和方案一本质上一样,都是对IP地址进行过滤,但是还得记录一下,因为方案二实现时遇到一些问题。

问题就是 JS如何获取本地客户端的唯一标识,或者说如何获取本地客户端的IP或者MAC地址?

答案可能令人比较失望,就是 前端JS没有办法获取到本地客户端IP或者MAC地址

当然有一些迂回的方法可以一定程度上实现,特此记录下:

(1)IE浏览器下通过ActiveX的方法
该方法的局限性不言而喻,就是必须限定浏览器为IE,而且需要手动启动ActiveX。

(2)通过第三方API获取公网IP
可以通过第三方的IP地址查询接口获取到客户端的公网IP,该方法的局限性在于仅仅只能获取到公网IP。

(3)通过webRTC获取本地IP
该方法的原理是通过建立webRTC (网页即时通信,Web Real-Time Communication)连接,在连接中获取客户端本地IP,局限性在于相对麻烦。

备忘

1、如何查看PC的本地IP和公网IP?

本地IP通过ipconfig查看即可,其中的IPV4地址即为本地IP,如下图:

前端唯一标识问题_客户端_02

公网IP可以在百度中“IP地址”快速查看,如下图:

前端唯一标识问题_客户端_03


2、公网IP和本地IP的区别?

​什么是公网IP?​