JS常用知識點整理
1.CORS
CORS(Corss-Origin Resource Sharing,跨資源共享),基本思想是使用自定義的HTTP頭部讓瀏覽器與服務(wù)器進(jìn)行溝通,從而決定請求或響應(yīng)的成功或失敗。即給請求附加一個額外的Origin頭部,其中包含請求頁面的源信息(協(xié)議、域名和端口),以便服務(wù)器根據(jù)這個頭部決定是否給予響應(yīng)。
2.document.domain
將頁面的document.domain設(shè)置為相同的值,頁面間可以互相訪問對方的JavaScript對象。
注意:
不能將值設(shè)置為URL中不包含的域;
松散的域名不能再設(shè)置為緊繃的域名。
3.圖像Ping
var img=new Image(); img.onload=img.onerror=function(){ ... ... } img.src="url?name=value";
請求數(shù)據(jù)通過查詢字符串的形式發(fā)送,響應(yīng)可以是任意內(nèi)容,通常是像素圖或204響應(yīng)。
圖像Ping最常用于跟蹤用戶點擊頁面或動態(tài)廣告曝光次數(shù)。
缺點:
只能發(fā)送GET請求;
無法訪問服務(wù)器的響應(yīng)文本,只能用于瀏覽器與服務(wù)器間的單向通信。
4.Jsonp
var script=document.createElement("script"); script.src="url?callback=handleResponse"; document.body.insertBefore(script,document.body.firstChild);
JSONP由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)
回調(diào)函數(shù)是接收到響應(yīng)時應(yīng)該在頁面中調(diào)用的函數(shù),其名字一般在請求中指定。
數(shù)據(jù)是傳入回調(diào)函數(shù)中的JSON數(shù)據(jù)。
優(yōu)點:
能夠直接訪問響應(yīng)文本,可用于瀏覽器與服務(wù)器間的雙向通信。
缺點:
JSONP從其他域中加載代碼執(zhí)行,其他域可能不安全;
難以確定JSONP請求是否失敗。
5.Comet
Comet可實現(xiàn)服務(wù)器向瀏覽器推送數(shù)據(jù)。
Comet是實現(xiàn)方式:長輪詢和流
短輪詢即瀏覽器定時向服務(wù)器發(fā)送請求,看有沒有數(shù)據(jù)更新。
長輪詢即瀏覽器向服務(wù)器發(fā)送一個請求,然后服務(wù)器一直保持連接打開,直到有數(shù)據(jù)可發(fā)送。發(fā)送完數(shù)據(jù)后,瀏覽器關(guān)閉連接,隨即又向服務(wù)器發(fā)起一個新請求。其優(yōu)點是所有瀏覽器都支持,使用XHR對象和setTimeout()即可實現(xiàn)。
流即瀏覽器向服務(wù)器發(fā)送一個請求,而服務(wù)器保持連接打開,然后周期性地向瀏覽器發(fā)送數(shù)據(jù),頁面的整個生命周期內(nèi)只使用一個HTTP連接。
6.WebSocket
WebSocket可在一個單獨的持久連接上提供全雙工、雙向通信。
WebSocket使用自定義協(xié)議,未加密的連接時ws://;加密的鏈接是wss://。
var webSocket=new WebSocket("ws://"); webSocket.send(message); webSocket.onmessage=function(event){ var data=event.data; ... .... }
注意:
必須給WebSocket構(gòu)造函數(shù)傳入絕對URL;
WebSocket可以打開任何站點的連接,是否會與某個域中的頁面通信,完全取決于服務(wù)器;
WebSocket只能發(fā)送純文本數(shù)據(jù),對于復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在發(fā)送之前必須進(jìn)行序列化JSON.stringify(message))。
優(yōu)點:
在客戶端和服務(wù)器之間發(fā)送非常少的數(shù)據(jù),減少字節(jié)開銷。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
BootStrap 模態(tài)框?qū)崿F(xiàn)刷新網(wǎng)頁并關(guān)閉功能
這篇文章主要介紹了BootStrap 模態(tài)框?qū)崿F(xiàn)刷新網(wǎng)頁并關(guān)閉的功能,實現(xiàn)方法簡單易懂,需要的朋友可以參考下2017-01-01JS中‘hello’與new String(‘hello’)引出的問題詳解
這篇文章主要給大家介紹了關(guān)于JS中'hello'與new String('hello')引出的問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08