摘要:如何解決瀏覽器多個(gè)標(biāo)簽頁之間的通信使用使用使用和概念簡單理解就是一種可以讓服務(wù)器在客戶端的硬盤或者內(nèi)存里面存儲(chǔ)少量數(shù)據(jù)或者說從客戶端硬盤讀取數(shù)據(jù)的技術(shù)的存放形式的信息是以名值形式保存一個(gè)名值僅僅是一條信息保存位置是,隱藏文件的功能多
如何解決瀏覽器多個(gè)標(biāo)簽頁之間的通信?
使用cookie
使用web worker
使用localeStorage和sessionStorage
cookie
概念
cookie簡單理解就是一種可以讓服務(wù)器在客戶端的硬盤或者內(nèi)存里面存儲(chǔ)少量數(shù)據(jù),或者說從客戶端硬盤讀取數(shù)據(jù)的技術(shù).
cookie的存放形式
cookie的信息是以名/值形式保存,一個(gè)名/值僅僅是一條信息
cookie保存位置
window7是C:UsersAdministratorCookies,隱藏文件(.txt).
cookie的功能
多用來記錄用戶的個(gè)人信息.畢竟HTTP是無狀態(tài)的協(xié)議.
cookie的工作原理
用戶在瀏覽器輸入url,發(fā)送請求,服務(wù)器接受請求
服務(wù)器在響應(yīng)報(bào)文中生成一個(gè)Set-Cookie報(bào)頭,發(fā)給客戶端
瀏覽器取出響應(yīng)中Set-Cookie中內(nèi)容,以cookie.txt形式保存在客戶端
如果瀏覽器繼續(xù)發(fā)送請求,瀏覽器會(huì)在硬盤中找到cookie文件,產(chǎn)生Cookie報(bào)頭,與HTTP請求一起發(fā)送.
服務(wù)器接受含Cookie報(bào)頭的請求,處理其中的cookie信息,找到對應(yīng)資源給客戶端.
瀏覽器每一次請求都會(huì)包含已有的cookie.
圖解基本的cookie知識點(diǎn)
cookie 是有大小限制的
每一個(gè)cookie都是合法格式的名值對
cookie是有有效期的(Expires)
cookie有domain域的概念,不同的域是不能進(jìn)行訪問的.可以通過設(shè)置document.domain來實(shí)現(xiàn)一些跨域.
cookie中的path路徑,一個(gè)頁面產(chǎn)生的cookie只能被與這個(gè)頁面的同一目錄或者是其子目錄下的頁面訪問(同源策略).
cookie的兩種形式
短暫性的:瀏覽器關(guān)閉后或者頁面關(guān)閉后就刪除cookie
具有有效期的(設(shè)置了有效時(shí)間),瀏覽器關(guān)閉依然存在硬盤
js操作cookie
獲取cookie
console.log(document.cookie) //"r_user_id=f7aae2bb-6810-4ec9-b4c7-fbf2fe1e0738; PHPSESSID=web4~7rgfe5mbsjam50en9sujerd085;"
對cookie進(jìn)行存/改
document.cookie="key=value" //key存在就修改為value,不存在就創(chuàng)建
讀取對應(yīng)的cookie值
var getCookie = function( keyName){ var items = [] , json = {}; var cookie = document.cookie; if( cookie.length > 0 ){ items = cookie.split(";"); for(var i = 0;i < items.length;i++){ json[items[i].split("=")[0]] = items[i].split("=")[1] ; } return unescape(json[keyName]); }else{ return ""; } }
cookie有效期的設(shè)置
//第一種 function setCookie(c_name, value, expiredays){ var exdate=new Date();//生成當(dāng)天一個(gè)時(shí)間 exdate.setDate(exdate.getDate() + expiredays);//獲取當(dāng)天時(shí)間的天數(shù)+有效期天數(shù) document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()); //設(shè)置cookie } //第二種 function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + "; " + expires; } `` 原理都是一樣:格式不同. - 刪除cookie(設(shè)置有效時(shí)間過期)
//刪除cookies
function clearCookie(name) {
setCookie(name, "", -1);
}
//刪除cookies
function delCookie(name)
{
var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
代碼不放在服務(wù)器在chrome瀏覽器下不能處理cookie貌似 > cookie的路徑訪問原則 默認(rèn)情況下,只有與創(chuàng)建了cookie 的頁面在同一個(gè)目錄或子目錄下的網(wǎng)頁才可以訪問這個(gè)cookie.
www.csdn.cn/blog/a.html 創(chuàng)建了cookie
www.csdn.cn/blog/b.html 就可以訪問這個(gè)cookie頁(同一目錄)
www.csdn.cn/blog/xyz/c.html 也可以訪問這個(gè)cookie頁(字目錄)
www.csdn.cn/xx/d.html 就不可以訪問
如何跨域這個(gè)障礙呢? 原理:設(shè)置cookie到一個(gè)更高一級別的目錄下(前面那個(gè)例子就可以把path="/")
document.cookie = "name=value;expires=date;path=path"
最常用的例子就是讓 cookie 在根目錄下,這樣不管是哪個(gè)子頁面創(chuàng)建的 cookie,所有的頁面都可以訪問到了
document.cookie = "key=value;path=/"
> cookie的域 引出這個(gè)話題是因?yàn)?設(shè)置path只能解決同域下的cookie訪問問題.不同域的cookie怎么訪問?
www.csdn.cn 與 qq.csdn.cn ,如果后者想訪問前者的cookie.
就要讓www.csdn.cn這么設(shè)置
document.cookie = "key = value;path=/;domain=csdn.cn"
> cookie的編碼格式 在對cookie設(shè)置讀取時(shí)候記得處理編碼問題
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/81056.html
摘要:不存在或格式不正確會(huì)導(dǎo)致文檔以兼容模式呈現(xiàn)標(biāo)準(zhǔn)模式的排版和運(yùn)作模式都是以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。又稱內(nèi)核及以上版本,等內(nèi)核及以上。內(nèi)核原為,現(xiàn)為內(nèi)核等。如果不能確定時(shí),首選使用自然樣式標(biāo)簽 HTML 語義化 HTML標(biāo)簽的語義化是指:通過使用包含語義的標(biāo)簽(如h1-h6)恰當(dāng)?shù)乇硎疚臋n結(jié)構(gòu) css命名的語義化是指:為html標(biāo)簽添加有意義的class 為什么需要語義化: 去...
摘要:不存在或格式不正確會(huì)導(dǎo)致文檔以兼容模式呈現(xiàn)標(biāo)準(zhǔn)模式的排版和運(yùn)作模式都是以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。又稱內(nèi)核及以上版本,等內(nèi)核及以上。內(nèi)核原為,現(xiàn)為內(nèi)核等。如果不能確定時(shí),首選使用自然樣式標(biāo)簽 HTML 語義化 HTML標(biāo)簽的語義化是指:通過使用包含語義的標(biāo)簽(如h1-h6)恰當(dāng)?shù)乇硎疚臋n結(jié)構(gòu) css命名的語義化是指:為html標(biāo)簽添加有意義的class 為什么需要語義化: 去...
摘要:不存在或格式不正確會(huì)導(dǎo)致文檔以兼容模式呈現(xiàn)標(biāo)準(zhǔn)模式的排版和運(yùn)作模式都是以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。又稱內(nèi)核及以上版本,等內(nèi)核及以上。內(nèi)核原為,現(xiàn)為內(nèi)核等。如果不能確定時(shí),首選使用自然樣式標(biāo)簽 HTML 語義化 HTML標(biāo)簽的語義化是指:通過使用包含語義的標(biāo)簽(如h1-h6)恰當(dāng)?shù)乇硎疚臋n結(jié)構(gòu) css命名的語義化是指:為html標(biāo)簽添加有意義的class 為什么需要語義化: 去...
摘要:的區(qū)別及用法是本地存儲(chǔ),存儲(chǔ)在客戶端,包括和。僅在當(dāng)前會(huì)話下有效,關(guān)閉頁面或?yàn)g覽器后被清除。源生接口可以接受,亦可再次封裝來對和有更好的支持。但需要程序員自己封裝,源生的接口不友好。每個(gè)最多只能有條,每個(gè)長度不能超過。 localStorage、sessionStorage、Cookie的區(qū)別及用法 showImg(https://segmentfault.com/img/bVYLlH...
閱讀 2513·2023-04-25 17:27
閱讀 1824·2019-08-30 15:54
閱讀 2369·2019-08-30 13:06
閱讀 2980·2019-08-30 11:04
閱讀 746·2019-08-29 15:30
閱讀 729·2019-08-29 15:16
閱讀 1733·2019-08-26 10:10
閱讀 3603·2019-08-23 17:02