切換語言為:簡體
Cookie機制詳解:屬性解釋及使用方法

Cookie機制詳解:屬性解釋及使用方法

  • 爱糖宝
  • 2024-06-30
  • 2072
  • 0
  • 0

cookie介紹

當你首次登入網站時,你會輸入使用者名稱和密碼。在後臺,網站的伺服器驗證這些憑據是否正確。一旦確認你的身份無誤,伺服器就會建立一個Cookie,並將其傳送到你的瀏覽器。這瞭解Cookie登入:原理、實踐與安全指南個Cookie包含了一個獨特的身份驗證令牌,它代表了你的登入會話。而這個包含使用者一些資訊的小型資料片段,就是Cookie。

跨站和跨域

兩個Url的一級域名與二級域名相同就屬於同站

Cookie機制詳解:屬性解釋及使用方法

兩個Url的協議或是域名或埠號不同那就跨域了,跨域判斷比跨站判斷嚴格很多。

Cookie機制詳解:屬性解釋及使用方法

Cookie操作

再瀏覽器中輸入document.cookie就可以得到部分的cookie資訊,獲取到的是一個字串,使用split(‘;’)將它及逆行切割,它的序列化方式是k1=v1;k2=v2;k3=v3

Cookie機制詳解:屬性解釋及使用方法

而瀏覽器中實際儲存的可不止這四條cookie只要httpOnly被打上了鉤那麼使用JS是無法獲取到這個cookie的,這種cookie只能用瀏覽器和服務端來進行操作,通常做種cookie使用來儲存一些與使用者身份資訊或是安全相關憑證。

Cookie機制詳解:屬性解釋及使用方法

在瀏覽器中增加一條cookie的值也是使用document.cookie來進行操作

Cookie機制詳解:屬性解釋及使用方法

Cookie機制詳解:屬性解釋及使用方法

而要變更一條cookie的值是與新增是一樣的,只要將需要變更的key值進行重新賦值就可以了,而刪除操作就需要將cookie的key值設為空,同時將max-age=-1

Cookie機制詳解:屬性解釋及使用方法

程式碼執行後cookie面板的對應的這條cookie就會消失

Cookie機制詳解:屬性解釋及使用方法

Cookie的屬性

key&value

每個cookie都有它對應的鍵名和值,獲取cookie對應值的時候,可以把document.cookie返回的字串使用split(‘;’)進行分割分割後每條cookie都是kv對,把他們存入物件之後就可以比較方便的獲取了使用了Cookie機制詳解:屬性解釋及使用方法

domain

domain是cookie能做作用的主機地址,domain裡面的東西非常多,首先domain不攜帶主機和埠,這個地方埠不同。協議不同都不會影響cookie,但是cookie的部分屬性只有在HTTPS下才能生效

我們在https://a.com中寫下了四個cookie Cookie機制詳解:屬性解釋及使用方法

開啟http://a.com這四個cookie依然存在,當把埠號改成1234的時候http://a.com:1234這四個cookie還是存在。這就是cookie的特性不區分協議和埠。

Cookie機制詳解:屬性解釋及使用方法

細心的同學已經發現了,有的domain最前面有一個點,有的沒有。有點的domain就表示這個cookie可以作用於當前域及其子域。如果我們在新增cookie的時候沒有帶上domain,那麼這個cookie只能作用於當前域。 但是當我們設定domain=a.com它的作用域卻是.a.com,當我們設定domain=.a.com時它的作用域也是.a.com這點要記好。

Cookie機制詳解:屬性解釋及使用方法

Cookie機制詳解:屬性解釋及使用方法

最後就是在子域裡面可以給父域設cookie,那麼我們可以在a.com中獲取到這個cookie,也可以在b.a.com獲取到這個cookie,因為這個cookie是作用於a.com及其子域的。但是我們是不能從父域給子域設定domain,也不能跨域設定domain。

Cookie機制詳解:屬性解釋及使用方法

Cookie機制詳解:屬性解釋及使用方法 Cookie機制詳解:屬性解釋及使用方法

Path

path用來指定URL的路徑,比如在a.com/a設定一個cookie這個cookie的path是/a,那麼在a.com/a/b這個頁面就也有這個cookie而在a.com/b這個頁面就沒有。

Cookie機制詳解:屬性解釋及使用方法

 

Expires & max-age

expires在指定時間失效 max-age多少秒之後失效 這兩個屬性同時存在時,max-age的優先順序更高 max- age=- 1   刪除cookie,0也是刪除 max-age=60   則60秒之後刪除cookie

當一個cookie既不設定expires又不設定max-age,那麼這個cookie就是一個會話cookie,當瀏覽器被關閉時,這個cookie將會被清除。

httpOnly

httpOnly時和cookie安全性緊密相關的屬性,前面說到過h't't'pOnly被打上了鉤那麼使用JS是無法獲取到這個cookie的,這種cookie只能用瀏覽器和服務端來進行操作的。帶有htppOnly的cookie只能由服務端透過響應標頭中的set-cookie種在瀏覽器上面,js是無法獲取到的。

Secure

Cookie機制詳解:屬性解釋及使用方法secure這個屬性告訴瀏覽器這個cookie只能用https協議傳輸,如果服務端的響應的從cookie中有secure這個屬性,而當前頁面的協議是http的,那麼這個瀏覽器會忽略掉這個cookie。

 

這裏我們在https協議的頁面下建立一個帶有secure的cookie,當我們向https://a.com發起請求的時候就會攜帶上這個cookie,而當向http://a.com發起請求的時候就不會有這個cookie的

Cookie機制詳解:屬性解釋及使用方法

Cookie機制詳解:屬性解釋及使用方法Cookie機制詳解:屬性解釋及使用方法

Samesite

samesite屬性可以限制跨站請求時cookie的傳送。samesite的值是none,lax或者strict中的一個:

None不論是否跨站都發送cookie,雖然None是約束性最弱的,但是隻有它是透過https協議進行傳輸時,瀏覽器才認為它有效,另外它必須要新增secure屬性,不然將無法儲存在瀏覽器上

Strict跨站不帶cookie

Lax預設值,部分情況下攜帶cookie。具體情況如下表

Cookie機制詳解:屬性解釋及使用方法

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.