1 .Cookie是一段小文本信息鹰晨,伴隨著用戶請求的頁面在瀏覽器和服務(wù)器之間傳遞单起。cookie包含每次用戶訪問站點(diǎn)時(shí)web服務(wù)器都可以讀取的信息。
2 .以后郭卫,當(dāng)該用戶再次訪問站點(diǎn)中的頁面战授,瀏覽器會自動在硬盤上查找與該URl相關(guān)聯(lián)的cookie舔庶,如果該cookie存在,瀏覽器便將該cookie與頁面請求一起發(fā)送到站點(diǎn)陈醒,后臺服務(wù)器便可以確定該用戶上次訪問站點(diǎn)的日期和時(shí)間惕橙,可以使用這些顯示一些信息。
3 .cookie與網(wǎng)站關(guān)聯(lián)钉跷,而不是與特定的頁面相關(guān)弥鹦,因此,無論用戶請求站點(diǎn)中的哪一個(gè)頁面爷辙,瀏覽器和服務(wù)器都將交換cookie信息
4 .cookie保存在用戶本地的機(jī)器上彬坏,并且按照域名分別保存,網(wǎng)站之間的cookie是不會覆蓋的膝晾。
5 .禁用了cookie之后栓始,使用url重寫技術(shù)。
6 .在進(jìn)行cookie操作的時(shí)候血当,保證cookie個(gè)數(shù)小于20個(gè)幻赚,總大小小于4kb.4096字節(jié)禀忆。
cookie的三個(gè)屬性
1 .有效性,一旦超過expires設(shè)置的有效期落恼,就立刻刪除文件
2 .可見性 .path:設(shè)置有關(guān)的路徑箩退,默認(rèn)為當(dāng)前文件所在的目domian:設(shè)置有關(guān)的域,設(shè)置可以訪問cookie的站點(diǎn)佳谦。
3 .cookie的path屬性表示當(dāng)前的cookie可以作用當(dāng)前網(wǎng)站的哪個(gè)路徑下面戴涝。無論是服務(wù)端還是客戶端,在獲取時(shí)優(yōu)先獲取本頁路徑下的cookies钻蔑,path=/:將cookie的路徑設(shè)置為網(wǎng)頁頂層目錄啥刻,這樣就可以讓該木下的所有網(wǎng)頁都能訪問這個(gè)cookie了。
4 .domain=baidu.com咪笑,可以在所有的子域名中訪問cookie郑什。例如tieba.baidu.com,mp3.baidu.com。
5 .安全性:cookie在傳遞時(shí)是否采取安全策略,secure.
cookie的組成
1 .name,value,path,domain,secure,expires.
8 .session的唯一表示sessionId保存在cookie中蒲肋。
9 .如果么有設(shè)置cookie的有效期蘑拯,任然會創(chuàng)建cookie但是不會將其保存在用戶的硬盤上,關(guān)閉頁面就刪除兜粘。cookie采取的是在客戶端保存狀態(tài)的方案申窘,session采取的是在服務(wù)器端保存狀態(tài)的方案。
10 .分為會話cookie孔轴,臨時(shí)cookie剃法,用戶退出瀏覽器就刪除cookie。持久cookie路鹰,存儲在硬盤上贷洲,瀏覽器退出,計(jì)算機(jī)重啟時(shí)他們?nèi)匀淮嬖诮3志胏ookie用來維護(hù)某個(gè)用戶會周期訪問的站點(diǎn)的配置文件或登錄名优构。唯一區(qū)別的就是他們的過期時(shí)間。
cookie的屬性
1 .domain:獲得或設(shè)置與cookie有關(guān)的域名雁竞,可用于限制特定區(qū)域的cookie訪問钦椭。默認(rèn)設(shè)置為創(chuàng)建網(wǎng)頁所在的服務(wù)器主機(jī)名。這個(gè)域的服務(wù)器都可以使用這個(gè)cookie
2 .Expires:獲得或設(shè)置過期時(shí)間碑诉,你可以將其設(shè)置為一個(gè)過去的日期以自動終止或刪除cookie
3 .max-age:cookie的生命周期
4 .path:獲得或設(shè)置cookie的虛擬路徑彪腔,這一屬性允許你限制cookie的范圍,也就是說进栽,訪問cookie只能限制一個(gè)特定的文件夾或者路徑訪問.一般一個(gè)站點(diǎn)中的每個(gè)頁面都能獲得該站點(diǎn)所有的cookie德挣,如果要限制的話,使用path快毛。domain屬性設(shè)置cookies的域范圍格嗅。
5 .secure:安全屬性番挺。發(fā)信號以表示是否使用了ssl來發(fā)送cookie值。默認(rèn)情況下是不安全的吗浩,設(shè)置為安全。cookie只能在瀏覽器和服務(wù)器通過https或其他安全協(xié)議進(jìn)行訪問没隘。
6 .修改cookie:不能直接修改cookie懂扼,更改cookie的過程涉及創(chuàng)建一個(gè)具有新值的cookie,然后將其發(fā)送到瀏覽器覆蓋舊的cookie右蒲。
cookie缺陷
1 .安全隱患:第三方web站點(diǎn)使用持久化cookie來跟蹤用戶就是對cookei最大的濫用阀湿,將著各種做法與iP地址和referer首部信息結(jié)合在一起,這些音效公司就可以建立起相當(dāng)精確的用戶檔案和瀏覽模式信息瑰妄。
session
1 .session是服務(wù)端技術(shù)陷嘴,利用這個(gè)技術(shù),服務(wù)器在運(yùn)行的時(shí)候可以為每一個(gè)用戶的瀏覽器創(chuàng)建一個(gè)session對象间坐,由于session是為用戶瀏覽器獨(dú)享灾挨,所以用戶在訪問服務(wù)器的web資源的時(shí)候,可以把各自的數(shù)據(jù)放在各自的session中竹宋,當(dāng)用戶再去訪問服務(wù)器中的其他web資源時(shí)劳澄,其他web資源在從各自的seesion中取出數(shù)據(jù)為用戶服務(wù)。
cookie跨域訪問
1 .同域單點(diǎn)登錄:用戶在同一加載平臺認(rèn)證之后蜈七,使用addCookie秒拔,用戶權(quán)限保存在cookie中,其他平臺通過調(diào)用getCookie飒硅,取得用戶信息砂缩,這樣用戶就可以不再受平臺限制,實(shí)現(xiàn)自由訪問各個(gè)系統(tǒng)了三娩。
2 .在a系統(tǒng)登錄之后庵芭,使用js創(chuàng)建一個(gè)影藏的iframe,通過iframe的src屬性將a域名下的cookie作為get的值傳到b的頁面上雀监。
3 .cors實(shí)現(xiàn)原理:讓服務(wù)器新增響應(yīng)頭:Access-control-allow-origin《通過http方式來實(shí)現(xiàn)資源共享喳挑,讓每個(gè)請求的服務(wù)直接返回資源。她使用了http交互方式來確定請求資源是否有資格請求該資源滔悉,并且通過設(shè)置httpheader來控制訪問資源的權(quán)限伊诵。
4 .cors是不會自動發(fā)送cookei的,需要額外限制回官,服務(wù)器通過設(shè)置Access-control-allow-credentials來控制是否允許cookie的提交曹宴。本地提交請求的時(shí)候要設(shè)置withCredentials=true.
5 .Nginx反向代理。
6 .jsonP方式請求
7 .superagent:api請求
8 .ajax請求默認(rèn)不支持?jǐn)y帶cookie歉提,所以可以使用jsonp,ajax中加上請求字段 xhrFields:{withCredentials:true}笛坦。這樣可以攜帶上cookie区转。
和cookie有關(guān)的字段
1 .cookie:接受到的響應(yīng)里面有cookie。
2 .set-cookie:
3 .name:
4 .expiress:cookie的有效期版扩,一旦cookie從服務(wù)器發(fā)送至客戶端废离,服務(wù)器端就不存在可以刪除cookie的發(fā)方法,只能通過覆蓋的方法來對cookie進(jìn)行更改礁芦。
5 .path:將服務(wù)器上的文件目錄作為cookie的適用對象
6 .domain:指定cookie的作用域?qū)ο蟆?br>
7 .secure:只在https單圈的時(shí)候才發(fā)送cookie
8 .httpOnly:加以限制蜻韭,使cookie不能被js腳本訪問。防止跨站腳本攻擊對cookie信息的竊取柿扣。
簡單會話保持
1 .在某些需要登錄的情況下肖方,客戶端和服務(wù)器之間需要保持一個(gè)會話session來記錄客戶端的各種信息。比如電子商務(wù)系統(tǒng)的身份認(rèn)證未状。一個(gè)服務(wù)器和客戶要進(jìn)行好幾次的交互才能完成一個(gè)請求俯画。所有的操作必須都使用一臺服務(wù)器操作,會話機(jī)制的作用就是在合適的情況下司草,讓客戶端發(fā)送的請求都轉(zhuǎn)發(fā)至后端相同的服務(wù)器進(jìn)行處理艰垂。客戶端和服務(wù)器建立的多個(gè)連接都是在一個(gè)服務(wù)器上處理的埋虹。
2 .連接超時(shí)材泄,負(fù)載均衡會為每一個(gè)處于保持狀態(tài)中的會話設(shè)定一個(gè)時(shí)間值,若從一個(gè)會話上時(shí)間間隔超過這個(gè)時(shí)間的話吨岭,就會認(rèn)為這是個(gè)新的會話拉宗,然后進(jìn)行負(fù)載平衡。
3 .最大并發(fā)數(shù):對于同一個(gè)連接中的數(shù)據(jù)包辣辫,負(fù)載均衡會將其進(jìn)行轉(zhuǎn)換旦事,轉(zhuǎn)換至后端的固定服務(wù)器處理。負(fù)載均衡器后一張表來記錄這個(gè)連接狀況急灭,由于這張表示消耗資源的姐浮,因此不可能是無限大的,所以扎帳表的大小叫做最大并發(fā)連接數(shù)葬馋,也就是系統(tǒng)能同時(shí)容納的連接數(shù)卖鲤。
其他cookie操作
1 .修改cookie:定義一個(gè)重名cookie進(jìn)行覆蓋
2 .刪除cookie:給他的expires設(shè)置一個(gè)過期時(shí)間。
3 .同一個(gè)域中cookie的數(shù)量不能超過20個(gè)畴嘶,整個(gè)cookie的大小不能超過4kb.
4 .即使在實(shí)現(xiàn)連續(xù)的連接蛋逾,當(dāng)用戶在一段時(shí)間內(nèi)沒有提交請求的時(shí)候,連接也會自動關(guān)閉的窗悯,作為web服務(wù)器区匣,必須使用一種機(jī)制來標(biāo)識唯一的用戶,同時(shí)記錄該用戶的狀態(tài)蒋院。
5 .瀏覽器總的可以存儲300個(gè)cookie,每個(gè)站點(diǎn)最多存放20個(gè)亏钩,每個(gè)大小為4kb
6 .為什么一個(gè)站點(diǎn)需要給一個(gè)網(wǎng)站發(fā)送多個(gè)cookie呢莲绰?
7 .web服務(wù)器通過在http響應(yīng)中增加set-cookie響應(yīng)頭將cookie信息發(fā)送給瀏覽器,瀏覽器則是在通過http請求增加cookie請求頭字段將cookie回傳給web服務(wù)器姑丑。
8 .SameSite:用于定義cookie如何開始執(zhí)行
9 .strict:啟用最嚴(yán)格的防護(hù)蛤签,有能力阻止所有csrf攻擊。所有發(fā)生的跨域請求都會被組織
10 .Lax:只會在使用危險(xiǎn)http方法發(fā)送跨域cookie的時(shí)候進(jìn)行阻止栅哀,比如post方法
11 .不要講所有的cookei都設(shè)置sameSite屬性震肮,不同的cookie有不同的用途,會話cookie設(shè)置為Lax昌屉,其他可以設(shè)置為strict屬性钙蒙。