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