前端開發中Cookie那些事兒
日期:2013-11-22 來源:攀枝花惠康網絡公司
前段時刻做了項目,在前端實現中頻仍的操作cookie,記實幾點供巨匠參考!
cookie操作在前端開發過程中經常碰著,當然如不美觀只是用來存儲一些簡的暌姑戶數據,仍是斗勁簡單的,我們要做的可能只是設置cookie名,值,過時時刻等,篡奪也只要按照cookie的名篡奪響應的cookie值就可以了。在復雜的應用中,光這些必定就不夠了。
cookie的屬性
除了name(名)和value(值),cookie還有以下一些可選屬性,用來節制cookie的有用期,浸染域,平安性等:
expires屬性
它指定與cookie聯系關鮮ё仝一路的網頁。在默認的情形下cookie會與建樹它的網頁,該網頁處于統一目錄下的網頁以及與這個網頁地址目錄下的子目錄下的網頁聯系關系
path屬性
指定了cookie的保留期,默認情形下cookie是且則存在的,他們存儲的值只在瀏覽器會話時代放在,當用戶退出瀏覽器后這些值也會丟失蹤,如不美觀想讓cookie存在一段時刻,就要為expires屬性設置為未來的一個用毫秒數暗示的過時日期或時刻點,expires默認為設置的expires的當前時刻。此刻已經被max-age屬性所庖代,max-age用秒來設置cookie的保留期。
如不美觀max-age屬性為正數,則暗示該cookie會在max-age秒之后自動失蹤效。瀏覽器會將max-age為正數的cookie持久化,即寫到對應的cookie文件中。無論客戶封鎖了瀏覽器仍是電腦,只要還在max-age秒之前,登錄網站時該cookie仍然有用。
如不美觀max-age為負數,則暗示該cookie僅在本瀏覽器窗口以及本窗口打開的子窗口內有用,封鎖窗口后該cookie即失蹤效。max-age為負數的Cookie,為姑且性cookie,不會被持久化,不會被寫到cookie文件中。cookie信息保留在瀏覽器內存中,是以封鎖瀏覽器該cookie就消逝蹤了。cookie默認的max-age值為-1。
?如不美觀max-age為0,則暗示刪除該cookie。cookie機制沒有供給刪除cookie的體例,是以經由過程設置該cookie即時失蹤效實現刪除cookie的效不美觀。失蹤效的Cookie會被瀏覽器年夜cookie文件或者內存中刪除。
這里要聲名一下:Session的cookie在ie6下,如不美觀用戶其實網頁上跳轉打開頁面或新開窗口(搜羅target=”_blank”,鼠標右鍵新開窗口),都是在統一個Session內。如不美觀用戶新開瀏覽器軌范或者說是歷程再打開當前的頁面就不是統一個Session。其他瀏覽器只要你Session存在,仍是統一個Session,cookie還能共享。在前段時刻的項目中ie6下吃了很年夜一個虧。
domain屬性可以使多個web處事器共享cookie。domain屬性的默認值是建樹cookie的網頁地址處事器的主機名。不能將一個cookie的域設置成處事器地址的域之外的域。
例如讓位于a.sodao.com的處事器能夠篡奪b.sodao.com設置的cookie值。如不美觀b.sodao.com的頁面建樹的cookie把它的path屬性設置為“/”,把domain屬性設置成“.sodao.com”,那么所有位于b.sodao.com的網頁和所有位于a.sodao.com的網頁,以及位于sodao.com域的其他處事器上的網頁都可以訪謁這個cookie。
如不美觀不設置expires或者max-age這個cookie默認是Session的,也就是封鎖瀏覽器該cookie就消逝蹤了。
secure屬性
前面說了每當請求新文燈癱,瀏覽器將發送Cookie各處事器,導致WEB機能下降。所以不建議將cookie作為客戶端存儲一種實現方案,替代方案參見:JavaScript當地存儲實踐(html5的localStorage和ie的userData)等。
同名的 cookie
它是一個布爾值,指定在收集上若何傳輸cookie,默認是不平安的,經由過程一個通俗的http毗連傳輸;
HttpOnly屬性
domain屬性
HttpOnly 屬性限制了 cookie 對 HTTP 請求的浸染規模。出格的,該屬性指示用戶代辦代庖忽略那些經由過程“非 HTTP” 體例對 cookie 的訪謁(好比瀏覽器吐露給js的接口)。注重 HttpOnly 屬性和 Secure 屬性彼此自力:一個 cookie 既可所以 HttpOnly 的也可以有 Secure 屬性。
在前段時刻的項目中我就用js去篡奪一個cookie,結不美觀怎么都取不到這個值,最后查證這個cookie是httpOnly的,花了近2個小時,悲劇了。
cookie的傳輸
瀏覽器將cookie信息以name-value對
的形式存儲于當地,每當請求新文燈癱,瀏覽器將發送Cookie,目的是讓Server可以經由過程HTTP請求追蹤客戶。所以年夜WEB機能的角度來說我們要盡量的減小cookie,以達到傳輸機能的最年夜化。
cookie的編碼息爭碼
因為cookie的名/值中的值不許可包含分號,逗號和空格符,為了最年夜化用戶代辦代庖和處事器的兼容性,任何被存儲為 cookie 值的數據都應該被編碼,例如用我們前端熟知的js全局函數encodeURIComponent編碼和decodeURIComponent解碼。
cookie作為客戶端存儲
同名的 cookie,分歧的 domain 或分歧的 path,屬分歧的 cookie;同名的 cookie,不異的 domain 且不異的 path,分歧的 expires,屬統一個 cookie。
文章來源:攀枝花惠康網絡公司
惠康網絡,是一家專業從事攀枝花網站建設,攀枝花網站制作,攀枝花網站設計公司,提供網站建設一條龍服務(網站域名注冊+網站服務器租用+網站開發+網站維護+網站營銷推廣),惠康網絡立足攀枝花,輻射全中國,攀枝花惠康網絡的客戶已經遍布國內各地大中小城市,我們高效優質的網站建設服務深受用戶好評。