HTTP Cookie 你了解多少?

Cookie是什么?

先給大家舉個例子,F12 打開瀏覽器的頁面之后,我們能在 Response Headers 的字段里面看到一個header 叫做 Set-Cookie,如下所示

在這里插入圖片描述

圖中包含的 Set-Cookie 為

Set-Cookie:uuid_tt_dd=10_20293537580-1709432565344-232525; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net

這個例子中,uuid_tt_dd 的值為 10_20293537580-1709432565344-232525,這個cookie 在2025 年 1 月 1 日過期,只能由 .csdn.net 域和其根路徑下的頁面訪問,我們可以在瀏覽器調試模式下的 Application 中找到uuid_tt_dd被瀏覽器記錄下來的樣式。
Reuqest Headers

當發起新的請求時,Cookie 會出現在請求的 Request Headers中。
在這里插入圖片描述

從這里我們可以看到,Request Headers里面的 Cookie 中記錄了 uuid_tt_dd。

基礎交互流程如下所示
在這里插入圖片描述

Cookie 說白了就是一個 http 協議中的 header 字段,這個字段會由被訪問的網站放在response-header 中通過 Set-Cookie 返回,當用戶瀏覽該網站時,瀏覽器存儲 Cookie 后,下次訪問會將該值帶上,那么這個值的信息代表什么含義?這是可以由網站開發者定義的,可以在這個值中存一些如登錄狀態的信息,這樣當請求攜帶 cookie 時,信息會被讀取以幫助網站記住用戶的訪問信息和偏好設置,使得網站能夠為用戶提供個性化的瀏覽體驗,并可以用于追蹤用戶在網站上的行為。

Cookie分類和屬性含義

屬性

Cookie在HTTP協議中位于HTTP頭部。它有多個屬性,包括:Expires/Max-Age,Domain,Path,Secure,HttpOnly,SameSite等,這些屬性幫助控制Cookie的安全性和使用范圍。

Expires/Max-Age: Expires 和 Max-Age 是 Cookie 的兩個屬性,用于定義 Cookie 的有效期。Expires 指定了 Cookie 的過期日期和時間,瀏覽器會在這個時間后刪除 Cookie。它使用特定的日期格式,如 Expires=Wed, 09 Jun 2021 10:18:14 GMT 。Max-Age 指定了從當前時間開始,Cookie 存在的秒數。例如,Max-Age=3600 表示 Cookie 將在一小時后過期。如果同時指定了 Expires 和 Max-Age ,Max-Age 具有更高的優先級。

Domain: Domain 屬性定義了哪些域名可以接收 Cookie。設置 Domain 屬性后,不僅當前域名下的頁面可以訪問這個 Cookie,指定的域以及其子域也能訪問。例如,如果一個Cookie 的 Domain 屬性被設置為 example.com ,那么 www.example.com 和subdomain.example.com 等都可以訪問這個 Cookie。這有助于跨子域共享 Cookie信息,但也需要謹慎使用以避免安全問題。。

Path: Path 屬性指定了哪些網站路徑下的頁面可以訪問 Cookie。如果設置了 Path=/blog ,那么只有網址下的 /blog 目錄及其子目錄中的頁面能夠訪問這個 Cookie。這有助于限制 Cookie 的訪問范圍,確保只有特定部分的網站可以使用該 Cookie,從而提高網站的安全性和數據的準確性。。

Secure: Secure 屬性標記 Cookie 僅通過安全的 HTTPS 連接發送。Secure 屬性設置后,Cookie 只會在 HTTPS 請求中被發送。這有助于防止 Cookie 在數據傳輸過程中被竊聽,增強了用戶數據的安全性。

HttpOnly: 當 Cookie 設置為 HttpOnly 時,意味著這個 Cookie 只能通過 HTTP 協議被服務器訪問,而不能通過客戶端腳本(如 JavaScript )訪問,這有助于增強安全性,防止跨站腳本攻擊( XSS )。這種設置不限制 Cookie 通過 HTTP 或 HTTPS 協議傳輸,主要目的是提高安全性,確保只有服務器能夠讀取 Cookie 信息。

SameSite: SameSite 屬性用于控制 Cookie 在跨站請求中的發送行為,有助于防止跨站請求偽造攻擊(CSRF)。它有三個值:Strict 、Lax 和 None。 Strict 只允許來自相同站點的請求發送 Cookie;Lax 允許某些第三方請求發送 Cookie,例如從其他網站導航到鏈接的情況;None 允許所有跨站請求發送Cookie,但必須與 Secure 屬性一起使用,確保Cookie僅通過安全連接發送。不設置SameSite屬性和將SameSite設置為None在效果上不完全相同,未明確設置 SameSite 屬性時,瀏覽器可能會使用默認行為,這在不同的瀏覽器和版本中可能有所不同。而明確將 SameSite 設置為 None 則指示瀏覽器在所有跨站請求中發送 Cookie,但這必須與 Secure 屬性一起使用,以確保Cookie僅通過 HTTPS傳輸。因此,明確設置提供了更明確的控制和跨瀏覽器的一致性。

一個包含多種屬性的Cookie例子可能是這樣的:

Set-Cookie: UID=Jack; Expires=Wed, 09 Jun 2023 10:18:14 GMT; Domain=example.com; Path=/; Secure; HttpOnly; SameSite=Strict

這個例子中,UID 是設置給用戶 Jack 的Cookie,它在2023年6月9日過期,只能由example.com域和其根路徑下的頁面訪問。此Cookie僅通過HTTP傳輸,不允許JavaScript訪問,且設置了SameSite為Strict,限制跨站點的發送。

類型

Cookie可以分為多種類型,包括基于生命周期的會話Cookie和持久Cookie;基于來源的第一方Cookie和第三方Cookie;以及基于功能的安全Cookie、HttpOnly Cookie、偏好Cookie、認證Cookie和跟蹤/廣告Cookie。還有其他特殊類型,如僵尸Cookie、Flash Cookie(本地共享對象)、超級Cookie和SameSite Cookie,它們在安全性、用戶跟蹤和廣告方面各有用途。這些分類幫助網站在為用戶提供個性化體驗的同時,確保交互的安全性和遵守隱私法規。

第一方 Cookie(First-party cookies):第一方Cookie是由用戶直接訪問的網站創建并設置的,它們通常用于記住用戶信息和偏好,如登錄狀態、語言選擇、主題偏好等,以便在用戶再次訪問網站時提供更個性化的體驗第一方Cookie僅為當前訪問的網站所用,不會被其他網站訪問或共享。

第三方Cookie(Third-party cookies):三方Cookie(Third-party cookies)是由非當前用戶正在訪問的網站域設置的Cookie。它們主要用于跨站跟蹤,允許第三方收集用戶在不同網站上的瀏覽信息,從而用于廣告定位、分析和個性化服務等目的。三方Cookie通常通過第三方廣告或者網頁元素(如圖像、廣告橫幅、或者社交媒體插件等)嵌入到網頁中來設置和訪問。

舉例來說,如果你訪問一個網站,這個網站包含了一個第三方廣告公司的廣告,那么這個廣告公司可能會在你的設備上設置一個Cookie,即使這個廣告公司的網站你并沒有直接訪問過。隨后,當你訪問其他包含同一廣告公司廣告的網站時,該公司可以讀取其之前在你設備上設置的Cookie,從而跟蹤你的網上行為,分析你的興趣和偏好,以便提供更加個性化的廣告。

會話Cookie(Session cookies):會話Cookie是臨時的Cookie,用于記住用戶在瀏覽器會話期間的活動。當用戶關閉瀏覽器窗口時,這些Cookie會被自動刪除。它們對于保持用戶登錄狀態、購物車中的商品等在短期內的信息至關重要。會話Cookie不需要指定過期時間(Expires)或最大年齡(Max-Age)屬性。當創建Cookie時,省略這些屬性,瀏覽器就會把它當作會話Cookie處理,這意味著用戶關閉瀏覽器窗口后,Cookie會被自動刪除。

持久Cookie(Persistent cookies):持久Cookie在用戶的設備上存儲更長時間,直到它們到達設定的過期日期或被用戶手動刪除。這類Cookie用于記住用戶的登錄信息、偏好設置和在多次訪問之間跟蹤用戶的活動。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Transformer模型分布式并行通信量淺析

1.數據并行DP(樸素數據并行,Zero數據并行之后補充) O ( h 2 ? l ) O(h^2*l) O(h2?l) 每臺機器做完自己的梯度后需要做一次All reduce操作來累積梯度,故一個batch計算發送的數據量為每層梯度大小 h 2 h^2 h2乘以層數 l l l 優點…

【李沐論文精讀】Resnet精讀

論文地址:Deep Residual Learning for Image Recognition 參考:撐起計算機視覺半邊天的ResNet【論文精讀】、ResNet論文逐段精讀【論文精讀】、【李沐論文精讀系列】 一、導論 深度神經網絡的優點:可以加很多層把網絡變得特別深,…

力扣周賽387

第一題 代碼 package Competition.The387Competitioin;public class Demo1 {public static void main(String[] args) {}public int[] resultArray(int[] nums) {int ans[]new int[nums.length];int arr1[]new int[nums.length];int arr2[]new int[nums.length];if(nums.leng…

Linux系統Docker部署RStudio Server

文章目錄 前言1. 安裝RStudio Server2. 本地訪問3. Linux 安裝cpolar4. 配置RStudio server公網訪問地址5. 公網遠程訪問RStudio6. 固定RStudio公網地址 前言 RStudio Server 使你能夠在 Linux 服務器上運行你所熟悉和喜愛的 RStudio IDE,并通過 Web 瀏覽器進行訪問…

第二十四章 :Docker 部署 SpringBoot

第二十四章 :Docker SpringBoot 配置文件容器外加載部署 Docker version 25.0.3, build 4debf41 ,Docker Compose version v2.24.2容器運行后,若需修改配置文件,只需修改宿主機的application-prod.yml ,重啟容器即可。 Springboot 2.x 版本 部署規劃 服務器IP192.168.92…

4. 編寫app組件

1. 代碼 main.ts // 引入createApp用于創建應用 import {createApp} from "vue"// 引入App根組件 import App from ./App.vue createApp(App).mount(#app) App.vue <!-- vue文件可以寫三種標簽1. template標簽&#xff0c;寫html結構2. script 腳本標簽&…

判斷docker 鏡像啟動成功 shell腳本

要編寫一個Shell腳本來判斷Docker鏡像是否啟動成功&#xff0c;你可以使用docker ps命令來檢查容器是否在運行狀態。以下是一個簡單的Shell腳本示例&#xff0c;用于判斷Docker鏡像是否成功啟動&#xff1a; #!/bin/bash# 指定要檢查的容器名稱或ID CONTAINER_NAME"your_c…

風險評估是什么意思?與等保測評有什么區別?

最近看到不少小伙伴在問&#xff0c;風險評估是什么意思&#xff1f;與等保測評有什么區別&#xff1f;這里我們就來簡單聊聊。 風險評估是什么意思&#xff1f; 風險評估是指對某個特定領域或項目進行全面分析和評估&#xff0c;以確定可能存在的潛在風險和危害&#xff0c;并…

2023全球軟件開發大會-上海站:探索技術前沿,共筑未來軟件生態(附大會核心PPT下載)

隨著信息技術的迅猛發展&#xff0c;全球軟件開發大會&#xff08;QCon&#xff09;已成為軟件行業最具影響力的年度盛會之一。2023年&#xff0c;QCon再次來到上海&#xff0c;匯聚了眾多業界精英、技術領袖和開發者&#xff0c;共同探討軟件開發的最新趨勢和實踐。 一、大會…

服務器感染了.ma1x0勒索病毒,如何確保數據文件完整恢復?

引言&#xff1a; 網絡安全成為至關重要的議題。.ma1x0勒索病毒是當前網絡威脅中的一種惡意軟件&#xff0c;它的出現給用戶帶來了極大的困擾。然而&#xff0c;正如任何挑戰一樣&#xff0c;我們也有方法來面對并克服.ma1x0勒索病毒。本文將全面介紹這種病毒的特點&#xff0…

MB85RC鐵電 FRAM驅動(全志平臺linux)

測試幾天發現一個bug&#xff0c;就是無法一次讀取32個字節的數據&#xff0c;1-31,33,128,512都試過了&#xff0c;唯獨無法讀取32個字節&#xff0c;驅動未報錯&#xff0c;但是讀取的都是0&#xff0c;找不到原因&#xff0c;估計應該是全志iic驅動的問題&#xff0c;暫時沒…

leetcode - 2095. Delete the Middle Node of a Linked List

Description You are given the head of a linked list. Delete the middle node, and return the head of the modified linked list. The middle node of a linked list of size n is the ?n / 2?th node from the start using 0-based indexing, where ?x? denotes th…

python中的類與對象(3)

目錄 一. 類的多繼承 二. 類的封裝 三. 類的多態 四. 類與對象綜合練習&#xff1a;校園管理系統 一. 類的多繼承 在&#xff08;2&#xff09;第四節中我們介紹了什么是類的繼承&#xff0c;在子類的括號里面寫入要繼承的父類名。上一節我們只在括號內寫了一個父類名&…

新手淘寶開店如何引流

對于新手淘寶賣家來說&#xff0c;引流是開店過程中最為關鍵的一環。如何吸引潛在客戶進入店鋪&#xff0c;提高商品的曝光率和銷量&#xff0c;是每個新手賣家都面臨的挑戰。本文將為你提供新手淘寶開店的引流攻略&#xff0c;幫助你從零開始掌握實用的引流技巧。 一、優化店…

C++的類型轉換

1.C語言中的類型轉換 在C語言中&#xff0c;如果賦值運算符左右兩側類型不同&#xff0c;或者形參與實參類型不匹配&#xff0c;或者返回值類型與接收返回值類型不一致時&#xff0c;就需要發生類型轉化&#xff0c;C語言中總共有兩種形式的類型轉換&#xff1a;隱式類型轉換和…

【機器人最短路徑規劃問題(柵格地圖)】基于模擬退火算法求解

代碼獲取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主獲取 基于模擬退火算法求解機器人最短路徑規劃問題&#xff08;柵格地圖&#xff09;的仿真結果 仿真結果&#xff1a; 初始解的路徑規劃圖 收斂曲線&#xff1a; 模擬退火算法求解的路徑規劃圖 結論&#xff…

Ubuntu20安裝zabbix-agent2,對接zabbix 6.4

在Ubuntu 20.04 LTS上安裝Zabbix Agent 2并與Zabbix Server 6.4對接&#xff0c;請按照以下步驟操作&#xff1a; 更新系統&#xff1a; sudo apt update sudo apt upgrade 添加Zabbix官方倉庫&#xff1a; 首先&#xff0c;需要將Zabbix的官方存儲庫添加到你的系統中以獲取Za…

C#面:常用的 異常類 有哪些

異常類是用于處理程序運行時出現的錯誤或異常情況的類。 C# 提供了一些內置的異常類&#xff0c;常用的包括&#xff1a; System.Exception&#xff1a;所有異常類的基類&#xff0c;可以用于捕獲所有類型的異常。System.SystemException&#xff1a;表示系統級別的異常&…

【了解SpringCloud Gateway微服務網關】

曾夢想執劍走天涯&#xff0c;我是程序猿【AK】 目錄 簡述概要知識圖譜什么是SpringCloudGateway功能特征應用場景核心概念配置文件工作原理路由謂詞工廠&#xff08;內置的&#xff09;[After 路由謂詞工廠](https://docs.spring.io/spring-cloud-gateway/docs/current/refere…

Mysql運維篇(七) 部署MHA--完結

一路走來&#xff0c;所有遇到的人&#xff0c;幫助過我的、傷害過我的都是朋友&#xff0c;沒有一個是敵人。如有侵權&#xff0c;請留言&#xff0c;我及時刪除&#xff01; 一、MHA軟件構成 Manager工具包主要包括以下幾個工具&#xff1a; masterha_manger 啟…