什么是CORS?
CORS為Continuously Operating Reference Stations的英文縮寫,翻譯為中文為“連續運行參考站”。
CORS是利用全球導航衛星系統、計算機、數據通信和互聯網絡等技術,在一個城市、一個地區或一個國家根據需求按一定距離建立長年連續運行的若干個固定GNSS 參考站組成的網絡系統。
CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。
單基站CORS就是只有一個連續運行站。類似于一加一的RTK,只不過基準站由一個連續運行的基準站代替,基站同時又是一個服務器,通過軟件實時查看衛星狀態、存儲靜態數據、實時向Internet發送差分信息以及監控移動站作業情況。移動站通過GPRS、CDMA網絡通訊方式與基站服務器進行通訊。
連續運行參考站系統是網絡RTK系統的基礎設施,(網絡RTK也稱多參考站RTK,是近年來在常規RTK、計算機技術、通訊網絡技術的基礎上發展起來的一種實時動態定位新技術。)在此基礎上就可以建立起各種類型的網絡RTK 系統。
隨著GPS技術的飛速進步和應用普及,它在城市測量中的作用已越來越重要。當前,利用多基站網絡RTK技術建立的連續運行(衛星定位服務)參考站(Continuously Operating Reference Stations),縮寫為CORS)已成為城市GPS應用的發展熱點之一。
CORS系統是衛星定位技術、計算機網絡技術、數字通訊技術等高新科技多方位、深度結晶的產物。 CORS系統由基準站網、數據處理中心、數據傳輸系統、定位導航數據播發系統、用戶應用系統五個部分組成,各基準站與監控分析中心間通過數據傳輸系統連接成一體,形成專用網絡。
擴展資料
CORS的特點和優勢:
1、投入較少
隨著單基站技術的成熟,只要較少的投資即可在一個中小城市建立一個CORS基站,滿足當地測量用戶不同層次空間信息技術服務的需要:基站所在城區及近郊區、城市進出口主要交通沿線,以及以基站為中心三十公里范圍內區縣城鎮城鄉地區實現快速厘米級實時定位及事后差分。
2、隨時可以升級和擴展
單/多基站系統可以隨時增加新的基站,加大實時RTK作業的覆蓋區域。
3、數據可靠、穩定、安全
基站連續觀測,靜態數據全天候采集,點位精度高,數據穩定;用戶登錄采取授權方式,數據中心可以管理登錄用戶,數據安全性高。
4、作業范圍廣
目前基于賓得單基站的RTK 作業半徑已經擴大到40公里,能夠實現快速厘米級實時定位及事后差分。
5、施工周期短
單參考站技術經過實踐表明它是一種比較成熟的技術,從方案落實開始采購設備,安裝調試,到驗收運行整個周期1個月以內。
參考資料來源:百度百科-CORS
CORS是什么??
CORS全稱Continuously Operating Reference Stations,中文名連續運行參考站,是衛星定位技術、計算機網絡技術、數字通訊技術等高新科技多方位、深度結晶的產物。
CORS系統由基準站網、數據處理中心、數據傳輸系統、定位導航數據播發系統、用戶應用系統五個部分組成,各基準站與監控分析中心間通過數據傳輸系統連接成一體,形成專用網絡。
擴展資料:
CORS在我國實際應用:
深圳市建立了國內第一個CORS系統,并已開始全面測量應用。類似的省市CORS體系已經或正在中國的一些省市建立,如廣東省、江蘇省、北京、天津、上海、廣州、東莞、成都、武漢、昆明、重慶和青島。
建立CDCORS四川地震局已經運行超過三年,其主要目的是用于監測四川地震災區,但勢函數的挖掘,在開發、利用GPS大地測量,通過撥號登錄授權,對外開放網絡訪問,實現用戶實時高精度差分定位,取得了一定的效益。四川省啟動了全省北斗衛星導航網絡建設。
除了政府的基本構造和應用外,CORS系統在商業領域的應用也進入了實際運行階段。星威信息技術基于CORS技術構建的港口運輸車高精度定位系統,有效解決了港口車輛物流密度大、機動性強導致的定位精度不高、調度不暢的問題。
參考資料來源:百度百科——CORS
什么是cors
【http】什么是cors跨域
前端開發中,常常需要進行跨域請求。既然提到跨域,首先我們的知道什么是“同源策略”。
同源策略限制從一個源加載的文檔或腳本如何與來自另一個源的資源進行交互。這是一個用于隔離潛在惡意文件的關鍵的安全機制。
如果協議,端口(如果指定了一個)和域名對于兩個頁面是相同的,則兩個頁面具有相同的源。
同一個源內,資源的訪問是很自由的。就跟在自己家中,想開冰箱開冰箱,想干啥干啥。如果你想訪問不同源的資源,可就沒那么自由了,這就是跨域。
關于跨域,常用的JSONP應該都知道。JSONP的原理是什么呢?我們來看看大神賀師俊的解釋:
很簡單,就是利用<script>標簽沒有跨域限制的“漏洞”(歷史遺跡啊)來達到與第三方通訊的目的。當需要通訊時,本站腳本創建一個<script>元素,地址指向第三方的API網址,并提供一個回調函數來接收數據(函數名可約定,或通過地址參數傳遞)。 第三方產生的響應為json數據的包裝(故稱之為jsonp,即json padding),這樣瀏覽器會調用callback函數,并傳遞解析后json對象作為參數。本站腳本可在callback函數里處理所傳入的數據。
可以知道JSONP就是個bug般的存在啊,如果你是一個有潔癖的程序員回想說:這不合理,這部干凈。因此我們引出cors。
那么,什么是cors呢?
我們來看看互動百科的解釋:
CORS(跨來源資源共享)是一份瀏覽器技術的規范,提供了Web服務從不同網域傳來沙盒腳本的方法,以避開瀏覽器的同源策略,是JSONP模式的現代版。
維基百科的解釋(手動谷歌):
Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources (e.g. fonts) on a web page to be requested from another domain outside the domain from which the first resource was rved.
這樣看來,其實嘛,cors就是一個規范,機制,基于這個規范,不同源之間才可以請求資源。相當于一個江湖規矩,大家都按規矩來嘛不是?不講規矩?信不信小拳拳捶你。
所以呢,要想使用cors跨域訪問,你就得講規矩。下面我們來看看有哪些規矩。
跨域資源共享標準( cross-origin sharing standard )允許在下列場景中使用跨域 HTTP 請求:
cors中有個術語叫 “簡單請求” ,若請求滿足所有下述條件,則該請求可視為“簡單請求”:
使用下列方法之一:
之所以區分簡單請求,是因為cors需要處理一些“非簡單請求”,這種特殊處理叫做“預檢請求”。大人物來了,總要提前準備準備吧,封路啥的blabla。
預檢請求的作用是 提前獲知服務器是否允許該實際請求 。“預檢請求”的使用,可以 避免跨域請求對服務器的用戶數據產生未預期的影響 。
一張圖可以清晰看到提前發送預檢請求的cors請求
Request Headers:
Respon Header:
cors在koa中的使用:
相關鏈接:
CORS原理及實現
跨域資源共享( CORS )是一種機制,是W3C標準。它允許瀏覽器向跨源服務器,發出 XMLHttpRequest 或 Fetch 請求。并且整個 CORS 通信過程都是瀏覽器自動完成的,不需要用戶參與。
而使用這種 跨域資源共享 的前提是,瀏覽器必須支持這個功能,并且服務器端也必須同意這種 "跨域" 請求。因此實現 CORS 的關鍵是服務器需要服務器。通常是有以下幾個配置:
具體可看: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#Preflighted_requests
過程分析:
另外在 CORS 中有 簡單請求 和 非簡單請求 ,簡單請求是不會觸發 CORS 的預檢請求的,而非簡單請求會。
“需預檢的請求” 要求必須首先使用 OPTIONS 方法發起一個預檢請求到服務器,以獲知服務器是否允許該實際請求。"預檢請求“的使用,可以避免跨域請求對服務器的用戶數據產生未預期的影響。
簡單請求不會觸發 CORS 的預檢請求,若請求滿足所有下述條件,則該請求可視為“簡單請求”:
簡單回答 :
詳細回答 :
除了上面這些請求外,都是非簡單請求。
若是跨域的非簡單請求的話,瀏覽器會首先向服務器發送一個預檢請求,以獲知服務器是否允許該實際請求。
整個過程大概是:
這里有兩點要注意:
一:
Access-Control-Request-Method 沒有 s
Access-Control-Allow-Methods 有 s
二:
關于 Access-Control-Max-Age ,瀏覽器自身也有維護一個最大有效時間,如果該首部字段的值超過了最大有效時間,將不會生效,而是以最大有效時間為主。
還是在原本 JSONP 的那個案例上。
我在根目錄下新建了一個文件夾 cors ,并往里面添加了一個 index.html 文件:
/cors/index.html
為了后面也方便調試,用 node 簡單寫了一個前端的本地服務和后端的本地服務。
在根目錄下新建 client.js 文件,并寫入:
./client.js :
在根目錄下新建 index.html 文件,并寫入:
./index.html :
(以上:實現了一個簡單的前端路由效果)
在根目錄下新建 rver.js 文件,并寫入:
./rver.js :
并給 package.json 中配置兩個啟動指令:
package.json :
OK👌,來分別啟動一下 npm run client 和 npm run rver
并打開頁面的 127.0.0.1:8000/cors (或者打開 127.0.0.1:8000 然后點擊 CORS 這個 a 標簽)
點擊 獲取name 按鈕,可以看到能夠正常獲取到本地服務器的數據了。
接著讓我們來改造一下 ./cors/index.html 中的按鈕點擊請求,讓它變成一個非簡單請求:
./cors/index.html :
此時,打開頁面點擊按鈕會發現發送了兩次 corsname 的請求:
(一)預檢請求:
(二)實際請求:
對于跨域 XMLHttpRequest 或 Fetch 請求,瀏覽器 不會 發送身份憑證信息。如果要發送憑證信息,需要設置 XMLHttpRequest 的某個特殊標志位。
例如我們想要在跨域請求中帶上 cookie ,需要滿足3個條件:
所以為了模擬這個效果,讓我們來寫一個小小的登錄+獲取數據的功能吧。
首先對于web端,我新增了一個登錄按鈕,并且配置了一下 axios :
./cors/index.html :
接著為了更方便的模擬后臺請求,我需要在項目中安裝兩個中間件:
接著修改一下 rver.js 的后臺配置:
./rver.js :
現在讓我們重啟一下服務,然后打開頁面看看效果:
(一)點擊登錄:
(二)點擊獲取name:
(三)查看cookie:
方案一:發出簡單請求(這不是廢話嗎...)
方案二:服務端設置 Access-Control-Max-Age 字段,在有效時間內瀏覽器無需再為同一個請求發送預檢請求。但是它有局限性:只能為同一個請求緩存,無法針對整個域或者模糊匹配 URL 做緩存。
本文發布于:2023-02-28 19:25:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167761476259937.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:cors(cors賬號).doc
本文 PDF 下載地址:cors(cors賬號).pdf
| 留言與評論(共有 0 條評論) |