RTSP协议网络摄像头网页无插件直播平台EasyNVR的云端综合管理平台EasyNVS提交基础配置报错原因分析
EasyNVR是基于RTSP协议网络摄像头/NVR的流媒体视频平台,无需安装各个安防设备厂商的视频播放插件,即可接入海康、大华、宇视等网络硬盘录像机、NVR设备。如果需要互联网访问前端设备视频,还可以通过部署EasyNVS视频管理平台在外网,来进行网络之间的穿透与视频交互。
EasyNVS视频管理平台可以在配置页面接入EasyNVR。但是我们在一次配置当中发现提交的时候,报错“APIAuth eq|eq”。
分析问题
此处是在提交EasyNVS基础配置时候提示的错误,于是我们查看浏览器控制台发送的请求。
前端传过来的参数是“false”。下面观看后端的接口。
APIAuth这个参数限制只能传“0”或“1”,而前端传过来的参数是“false”,于是报错了。
解决问题
现在有两种解决方法。第一种修改前端,第二种修改后端。我们先从前端开始排查问题。
1、观看前端代码
onAPIAuth (data) { data=='0'?this.APIAuth='1':this.APIAuth='0' // console.log(this.APIAuth) },
这个是选择按钮的点击事件,在这里会将APIAuth这个参数改为“0”或“1”,那为什么提交还是会报错?
2、继续查看接口。
发现在获取配置接口的时候,后端传给前端的参数是“false”。到这里我们可以明白是后端的错误,所以下面检查后端。
3、查看后端的获取配置的接口。
func (h *APIHandler) GetBaseConfig(c *gin.Context) { sec := utils.Conf().Section("nvs") c.IndentedJSON(http.StatusOK, gin.H{ "Host": sec.Key("host").MustString(utils.LocalIP()), "Port": sec.Key("port").MustUint(10812), "DevicePassword": sec.Key("device_password").MustString(""), "APIAuth": utils.Conf().Section("http").Key("api_auth").MustString("0"), }) }
这里将APIAuth这个参数从配置文件读取,如果读不到就是“0”,查看配置文件,发现没有为http下api_auth这个参数。
4、于是我们可以在ini配置文件给api_auth设置默认值为1。这样传回前端就不会报False,也就不再报错了。
关于EasyNVS
EasyNVR对接EasyNVS可以利用网络实现按需直播,同时屏蔽各种网络环境问题,适用于有线、WIFI、4G、专网,EasyNVS管理平台能获取到EasyNVR的所有能力,并进行互联网化输出,同时进行统一化的管理和接口输出。