安防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播放界面:

 

 

 

發佈了48 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章