安防RTSP_Onvif网络摄像头互联网直播视频流媒体服务器EasyNVR如何解决视频流Ajax跨域访问的问题

背景分析

从视频智能化相关技术研发开始计算,智能化在视频行业内已经发展了十余年,但是视频行业的智能化应用一直没有达到预期。目前视频智能化主要的表现还是集中在前端设备摄像机产品的某些智能功能,以及一些配备智能分析的NVR/DVR和后端的智能分析平台系统。智能化水平还处在初级阶段,周边的硬件及软件设备还未完善,还有很多环境和应用限制条件。

例如传统安防行业,智能安防的技术门槛有了极大程度的提高,系统的复杂性和技术性都呈指数增长。大数据、云计算、深度学习、人工智能应用等等技术,是安防智能化发展的关键技术。对于企业来说,安防智能化的建设需要的专业知识面非常广,并且要求有相当的整合能力,这一切都对安防企业的技术发展提出了不小的要求。

流媒体服务器如何解决视频流Ajax跨域访问的问题

分析问题

什么是跨域问题?
跨域,指的是浏览器不能执行其他网站的脚本。跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。

解决问题

1、响应头添加Header允许访问
2、jsonp 只支持get请求不支持post请求
3、httpClient内部转发
4、使用接口网关——nginx、springcloud zuul (互联网公司常规解决方案)

解决方式1:响应头添加Header允许访问
跨域资源共享(CORS)Cross-Origin Resource Sharing

response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问
response.addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

解决方式2:jsonp 只支持get请求不支持post请求
用法:
1,dataType改为jsonp
2,jsonp : “jsonpCallback”————发送到后端实际为http://a.a.com/a/FromServlet?userName=644064&jsonpCallback=jQueryxxx
3,后端获取get请求中的jsonpCallback
4,构造回调结构

解决方式3:httpClient内部转发
实现原理很简单,若想在B站点中通过Ajax访问A站点获取结果,固然有ajax跨域问题,但在B站点中访问B站点获取结果,不存在跨域问题,这种方式实际上是在B站点中ajax请求访问B站点的HttpClient,再通过HttpClient转发请求获取A站点的数据结果。但这种方式产生了两次请求,效率低,但内部请求,抓包工具无法分析,安全。

解决方式4:使用nginx搭建企业级接口网关方式
www.a.a.com不能直接请求www.b.b.com的内容,可以通过nginx,根据同域名,但项目名不同进行区分。什么意思呢?这么说可能有点抽象。假设我们公司域名叫www.nginxtest.com
当我们需要访问www.a.a.com通过www.nginxtest.com/A访问,并通过nginx转发到www.a.a.com
当我们需要访问www.b.b.com通过www.nginxtest.com/B访问,并通过nginx转发到www.a.a.com

视频流媒体服务器EasyNVR播放界面:

posted on 2020-01-15 15:07  EasyNVR  阅读(286)  评论(0编辑  收藏  举报