1.背景介紹
網站為什么要有域名?
①.什么是IP地址
我們知道,在Internet上有千百萬臺主機,為了區分這些主機,人們給每臺主機都分配了一個專門的地址,稱為IP地址。 通過IP地址就可以訪問到每一臺主機。我們的每個虛擬主機用戶,都分配一個永久的IP地址。
②.什么是域名
雖然可以通過IP地址來訪問每一臺主機,但是要記住那么多枯糙的數字串顯然是非常困難的,為此,Internet提供了 域名(Domain Name)。域名是由一串用點分隔的名字組成的Internet上某一臺計算機或計算機組的名稱,用于在數據傳輸時標 識計算機的電子方位(有時也指地理位置,地理上的域名,指代有行政自主權的一個地方區域)。例如“IT修真院”主機 的域名就是“jnshu.com”。
什么是cookie
Cookie,有時也用其復數形式 Cookies,指某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端 上的數據(通常經過加密)。定義于 RFC2109 和 2965 中的都已廢棄,最新取代的規范是 RFC6265[1] 。(可以 叫做瀏覽器緩存)
什么是session
Session:在計算機中,尤其是在網絡應用中,稱為“會話控制”。Session 對象存儲特定用戶會話所需的屬性及配置信息。
2.知識剖析
域名的用處
①終端必備——用域名建站
域名可以用來建站,從而實現價值最大化。但凡想要在互聯網上 大展拳腳的企業,都需要有一個域名來為自己開路。 域名是網站的門面,是用戶訪問平臺的重要途徑,是一個流量入口,同時也是企業立足于互聯 網的根本,對其項目開發及運營具有重要作用。
②宣傳之需——借域名提升品牌形象
域名之所以備受終端喜愛,還有一個重要的原因是能夠幫助企業進行廣告宣傳,促進品 牌推廣,從而獲取更多的流量。再土豪的企業,也沒法天天燒錢做廣告,但是有一個契合品牌的好域名就不一樣了,它 能夠剩下一筆廣告費,有助于提升品牌形象。
Cookie的用處
①.保存用戶的登陸狀態,例如上例中的,用戶進行登陸,成功登陸后,服務器生成特定的cookie返回給客戶端,客戶端下次訪 問該域名下的任何頁面,將該cookie的信息發送給服務器,服務器經過檢驗,來判斷用戶是否登陸。
②.記錄用戶的行為,例如,京東商場左下角有一個最近訪問的產品記錄信息,當當網上有你最近瀏覽過的書籍信息,都是根據用戶 訪問頁面,記錄到cookie的信息來制作的。
③.電商購物車的處理,因為在不同頁面,點擊添加到購物車,這個信息也是記到了cookie里面。結賬的時候統一提交
④.定制頁面。如果網站提供了換膚的功能,我們這個時候也是將他記錄到cookie里面,以便下次訪問還是保持原來的風格頁面。
cookie和session的的區別
①.cookie存于客戶端,只能保存字符串對象,不能保存對象類型 需要客戶端瀏覽器的支持:客戶端可以不支持,瀏覽器用戶可以禁用Cookie;
session存于服務器端。狀態信息保存在服務器端。這意味著安全性更高 通過類似與Hashtable的數據結構來保存 能支持任何類型的對象(session中可含有多個對象)
cookie的有效期
默認情況下,cookie是一個會話級別的,用戶退出瀏覽器后被刪除
cookie的有效期是可以自行設置的,版權歸作者所有。 如果設置了過期時間,瀏覽器就會把 cookie 保存到硬盤上,關閉后再次打開瀏覽器, 這些 cookie 依然有效直到超過設定的過期時間。
3.常見問題
cookie是不安全的,因為他可以被用戶篡改。同時由于cookie存儲大量的信息,一旦這些信息泄露出來,也是危害很大的,所以,我們要慎用cookie
5.編碼實戰
瀏覽器中如何查看和禁用cookie。
js中cookie操作:
js中cookie操作
//保存表單中的信息到Cookie中
function saveCookie(){
var userName = document.getElementById("username").value;
var password = document.getElementById("password").value;
console.log(userName+password);
var date = new Date();
date.setDate(date.getDate()+1);
// date.setTime(date.getTime()+5000);
//將cookie保存5秒鐘
setCookie("userName",userName,date.toGMTString(),"","","");
setCookie("password",password,date.toGMTString(),"","","");
showCookie()
}
//設置Cookie
/*
在cookie的名或值中不能使用分號(;)、逗號(,)、等號(=)以及空格。在cookie的名中做到這點很容易,但要保存的值是不確定的。如何
來存儲這些值呢?方法是用encodeURI()函數進行編碼,它能將一些特殊符號使用十六進制表示,例如空格將會編碼為“20%”,從而可以存儲于
cookie值中,而且使用此種方案還可以避免中文亂碼的出現。在獲取cookie時可以通過decodeURI()方法對cookie進行解碼。
Cookie的保存格式為:"name=value; expires=evalue; path=pvalue;"
每個屬性之間通過:'分號+空格'(; )隔開;
參數值的意思:
name:表示要存入對象的名稱,唯一必須設置(通常使用:user@domain格式命名,user為本地用戶,domain為所訪問網站的域名)。value:表示要存入得值。
expires:該對象的有效時間(可選)(默認為當前瀏覽器會話有用,關閉瀏覽器就消失);
path:指定該Cookie作用范圍(可選)(即:在那些網頁上可用);
domain:設置web服務器的Cookie共享域(可選)(如:test*.com)表示域名為test*.com的服務器共享該Cookie
secure:設置Cookie的傳輸過程是否加密(可選)(一般為SSH加密)
*/
function setCookie(name,value,expires,path,domain,secure){
document.cookie=name+"="+encodeURI(value)+
((expires) ? "; expires=" + expires : "")+
((path) ? "; path=" + path : "")+
((domain) ? "; domain=" + domain : "")+
((secure) ? "; secure=" + secure : "");
}
/**
獲取瀏覽器中的Cookie時,只能夠一次獲取所有的cookie值,而不能指定cookie名稱來獲得指定的值,這正是處理cookie值最麻 煩的一部分。
用戶必須自己分析這個字符串,來獲取指定的cookie值
**/
//獲取瀏覽器中的Cookie
function getCookie(cName){
var cookieString = decodeURI(document.cookie);
var cookieArray = cookieString.split("; ");
console.log(cookieArray.length);
for(var i = 0; i < cookieArray.length; i++){
var cookieNum = cookieArray[i].split("=");
console.log(cookieNum.toString());
var cookieName = cookieNum[0];
var cookieValue = cookieNum[1];
if(cookieName == cName){
return cookieValue;
}
}
return false;
}
function showCookie(){
var txt = ?document.getElementById("txt_showCookie");
txt.value = "用戶名:"+getCookie("userName")+"\n密碼:"+getCookie("password");
}
//刪除Cookie就是簡單的將cookie的expires屬性設置為一個過去的時間即可。
function deleteCookie(){
var date = new Date();
date.setTime(date.getTime()-1000);
setCookie("userName",password,date.toGMTString(),"","","");
setCookie("password",password,date.toGMTString(),"","","");
showCookie();
}
cookie顯示區域
6.擴展思考
什么是域名解析服務(DNS)?
人們習慣記憶域名,但機器間互相只認IP地址,域名與IP地址之間是一一對應的, 它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析服務器來完成, 整個過程是自動進行的。
7.參考文獻
8.更多討論
cookie與本地存儲之間的區別
①. cookie在瀏覽器和服務器間來回傳遞。而sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。
②. cookie數據還有路徑(path)的概念,可以限制cookie只屬于某個路徑下。存儲大小限制也不同,cookie數據不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如會話標識。sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。
③. 數據有效期不同,sessionStorage:僅在當前瀏覽器窗口關閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。
④. 作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知機制,可以將數據更新的通知發送給監聽者。Web Storage 的 api 接口使用更方便。
PPT鏈接:
視頻鏈接:
今天的分享就到這里啦,歡迎大家點贊、轉發、留言、拍磚~
下期預告:return的用法,不見不散~
------------------------------------------------------------------------------------------------------------------------
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~
我的邀請碼:92249038,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/92249038