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

背景分析

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

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

 

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

分析问题ajax

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

解决问题json

一、响应头添加Header容许访问
二、jsonp 只支持get请求不支持post请求
三、httpClient内部转发
四、使用接口网关——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播放界面: