退出頁面刪除cookie_Cookie 機制

歡迎關注公眾號 學習資料不會少

01

「HTTP 協議是無狀態的」

對于瀏覽器的每一次請求,服務器都會獨立處理,不與之前或之后的請求發生關聯。

這個過程如圖 11-1 所示,3次“請求/響應”之間沒有任何關系。

即使是同一個瀏覽器發送了3個請求,服務器也會獨立處理這3個請求,服務器并不知道這3個請求是來自同一個瀏覽器。

?服務器需要識別瀏覽器請求,就必須弄清楚瀏覽器的請求狀態。既然HTTP 協議是無狀態的,那就讓服務器和瀏覽器共同維護一個狀態,這就是會話機制。

02

「會話機制」

會話機制的過程如圖11-2所示,過程如下:

a59c987028e5717b37543a66ff2b1af4.png

▲圖 11-1 HTTP協議是無狀態的

5545c5ca60ae69154cda9a6c1c24deaf.png

▲圖 11-2 繪畫機制

(1) 瀏覽器第一次請求服務器時,服務器創建一個會話,并將會話的id作為響應的一部分發送給瀏覽器。

(2) 瀏覽器存儲會話id,并在后續第二次和第三次請求中帶上會話id。服務器取得請求中的會話id就知道是不是同一個用戶中。

這樣一來,后續請求與第一次請求就產生了關聯。

03

「Cookie機制」

服務器在內存中保存會話對象。瀏覽器可以使用Cookie機制保存會話id,如圖 11-3所示。

0c02b105a138d435e0133828de889a9e.png

▲圖 11-3? Cookie 機制

Cookie 機制是一種會話機制。Cookie 是瀏覽器用來存儲少量數據的一種機制,數據以"key=value"形式存儲,瀏覽器發送HTTP 請求時,自動附帶 cookie信息。

04

「Cookie是什么」

Cookie 是一小段文本信息,伴隨著用戶請求和頁面在瀏覽器和Web 服務器之間傳遞。

Cookie 是一種 HTTP Header, 以"key=value”的形式組成,比如ip_country=CN。

兩個Cookie之間用分號隔開,比如 ip country=CN;mbox=check#true#1499311989。

瀏覽器把 Cookie 通過HTTP請求中的 Header, 比如"Cookie:ip_country=CN”發送給Web服務器。Web服務器通過HTTP響應中的 Header, 比如"Set-Cookie:ip_country=CN”,把Cookie 發送給瀏覽器。

使用 Fiddler 可以清楚地看到Cookie在瀏覽器和服務器之間傳遞的過程。Fiddler工具中可以清晰地看到HTTP 請求中的 Cookie和HTTP 響應中的 Cookie。

實例:啟動 Fiddler, 打開瀏覽器訪問一些購物網站,就可以看到如圖 11-4 所示的情況。

95629c5691198e17d7a33c6595e8c470.png

▲圖 11-4? Cookie在瀏覽器和Web服務器中的傳輸

05

「Cookie 的作用」

Cookie 最主要的作用是用來做用戶認證,還可以用于保存用戶的一些其他信息。

Cookie 也可以用于互聯網精準廣告定向技術,比如用戶瀏覽了某些商品,就可以用Cookie 將其記錄下來,對網民所有的上網行為進行個性化的深度分析;按廣告主需求鎖定目標受眾,進行一對一傳播,提供多通道投放,按照效果付費。

06

「抓包觀察上海科技館網站的登錄」

我們通過 Fiddler 來抓包觀察上海科技館網站的登錄,才理解立求的過程和。

第一步;啟動 Fiddler, 啟動瀏覽器,打開http: //piaoweb.sstm.org.cn/: 輸入用戶名和密碼,單擊登錄(請讀者自己注冊賬號),

抓包后可以看到瀏覽器把用戶名和密碼發送給了Wcb服務器,如圖11-5 所示

69bb9c06177f28c02dcac901c900ca0f.png

▲圖11-5 網站登錄抓包

Web 服務器會驗證用戶名和密碼的正確性,然后通過“Set-Cookie”給瀏覽器發送3 個Cookie, 其中一個是用來保存登錄信息的。

第二步:在瀏覽器中打開“用戶中心":http: //piaoweb.sstm.org.cn/user/center/orderlist。

抓包后可以看到,HTTP 請求中會帶上 Cookie (即在上一步中Web服務器返回的Cookie) , 這樣Web 服務器就認為瀏覽器是登錄狀態,如圖11-6所示。

c39b7dc4a37992dcade3d192168e6ede.png

▲圖11-6 自動帶上Cookie

07

「Cookie的屬性」

從Fiddler的抓包中,我們可以看到Web服務器返回了下面這一段數據給瀏覽器。

Set-Cookie: cookie _user _token=C5CBD6FBDODAOEE

4B5DC36E7075D8CDA; Expires=Thu, 06-Jul-2017 09: 17: 46 GMT; Path=/; HttpOnly

(1) Expires 屬性:Expires的值是一個時間,代表過期時間。過了這個時間,該Cookie就失效了。

如果不指定 Expire time, 表示關閉瀏覽器/頁面的時候,此Cookie 就應該被瀏覽器刪除了。

(2) Path 屬性:表示Cookie 所屬的路徑,asp.net 默認為“/”, 就是根目錄。在同一個服務器上的目錄如下:/test/、/test/cd/、/test/dd/.現假設一個Cookiel的path為/test/, Cookie2的path為/test/cd/, 那么test 下的所有頁面都可以訪問到Cookiel, 而/test/dd/的子頁面不能訪問cookie2.這是因為Cookie 只能讓其path 路徑下的頁面訪問。

(3) HttpOnly 屬性:這是個關于安全方面的屬性,將一個Cookie 設置為HttpOnly后,通過 Javascript 腳本將無法讀取到Cookie信息,這能有效地防止黑客用XSS 發起攻擊。

一般來說,跟登錄相關的Cookie 必須設置為HttpOnly。

08

「11. 8 Cookie的分類」

我們可以大致把Cookie分為2類:會話 Cookie 和持久Cookie。

會話Cookie是一種臨時的 cookie, 它記錄了用戶訪問站點時的設置和偏好;關閉瀏覽器,會話Cookie 就被刪除了。

持久 Cookie 存儲在硬盤上,不管瀏覽器退出或者計算機重啟,持久 cookie 都繼續存在。持久Cookie 有過期時間。

09

「Cookie 保存在哪里」

Cookie 是存在硬盤上的,IE 存Cookie 的地方和 Firefox 存 Cookie 的地方不一樣。不同的操作系統存Cookie的地方也可能不一樣。

不同的瀏覽器會在各自的獨立空間存放 Cookie, 互不干涉。

以Windows7、IE8為例,Cookie的存放路徑為 C: \Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Files。

注意:緩存文件和 cookie 文件是存在一起的,都在這個目錄下。

你也可以這樣查找,打開IE, 單擊Tools-> Internet Options-> General Tab 下的->Browsing history 下的“Setting”按鈕,在彈出的對話框中單擊“View files”, 如圖11-7所示。

69bb9c06177f28c02dcac901c900ca0f.png

▲圖 11-7 查看Cookie 存儲的目錄

不同的網站有不同的Cookie 文件,如圖 11-8 所示。

cf2a7df9e2fd38c533ba2fe9f95da768.png

▲圖 11-8? 查看Cookie

10

「使用和禁用Cookie」

?可以在IE瀏覽器中設置禁用Cookie。打開控制面板中的Internet選項,選擇隱私選項卡。可以設置禁用Cookie,如圖11-9所示。

4e898cf6e827ef661672cc3a98f94c74.png

▲圖 11-9 使用和禁用Cookie

11

「網站自動登錄的原理」

很多網站都有自動登錄的功能,我們以“論壇自動登錄”為例來說明 Cookic是如何傳遞的

在登錄頁面輸入用戶名、密碼,選擇保存密碼單擊登錄(這時候,其實在你的機器上已保存好了登錄的 Cookie, 可以按照上節介紹的方法去你的計算機上找一下博客園的Cookie) 。

我們下次訪問博客園的流程如下。

(1) 用戶打開IE瀏覽器,在地址欄輸入http://49.233.108.117:3000/

(2) IE首先會在硬盤中查找關于cnblogs.com的Cookie, 然后把Cookie 放到HTTP Request 中,再把Request 發給Wcb服務器。

(3) Web服務器返回博客園首頁,這時你會看到自己已經登錄了。

12

「Cookie 和文件緩存的區別」

很多人會把Cookie 和文件緩存弄混淆,這是兩個完全不一樣的東西。唯一的相同之處可能是它們倆都存在硬盤上,而且存在同一個文件夾下。

我們可以在IE中分別選擇刪除Cookie 和緩存文件,如圖11-11所示。

圖 11-11 Cookie和文件緩存

13

「Cookie 泄露隱私」

某年中央電視臺“3·15”晚會上曝光了一個現象,很多不法公司利用Cookie 跟蹤并采集用戶的個人信息,并轉賣給網絡廣告商,形成了一條竊取用戶信息的灰色產業鏈。通過這種方法可以實現廣告準確投放,但卻嚴重干擾了用戶的正常網絡應用,侵害了用戶的隱私和利益。

目前歐洲一些國家已經對Cookie 立法,并規定:如果網站需要保存用戶的 Cookie, 就必須彈出一個對話框,經用戶確認后才能保存Cookie。

往期精彩文章

喜報來了!凡貓學員薪資最高16K!

金融行業軟件測試介紹

2020年為什么大家都開始學習自動化測試?

學習測試開發前 你需要掌握的python 代碼水平

1萬+軟件測試人員都在學的精品課程免費送,大家別錯過

5bae4d9647ee80cc4ddb4175bbd6bf4e.gif

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

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

相關文章

【程序員感悟系列】 由一點業務說開去

最近的工作不是很忙,我也趁著這個機會多讀了一些技術的書籍。比如剛讀完的《大話設計模式》,以將故事的形式講述了設計模式的方方面面,感覺還是不錯的。現在看的一本是英國人寫的《企業應用架構模式》。對于web的企業級應用,還是挺…

浮點數使用注意

public class DoubleNote{ public static void main(String[] args){ System.out.println((1.0-0.8)); //結果: 0.19999999999999996 //浮點數“”要慎用 System.out.println((1.0-0.8)0.2)); // false } } /* Java 浮點數表示采用IEE765表示法 */

Oracle WebLogic Java云服務–幕后花絮。

在開放世界方面,發生的一件大事可能是出乎意料的消息,那就是Oracle最終支持云計算發展并提供自己的公共云服務 。 除了官方公告之外,Aquarium上( 此處和此處 )的內容或多或少都沒有多少內容,您找不到很多信…

QT子窗口及停靠實現

Demo的效果 頭文件中的變量聲明 //退出動作QAction* exit;//菜單欄菜單QMenu* filemenu;QMenu* actiona;//在狀態欄的標簽控件QLabel* label;//兩個停靠窗口QDockWidget *dockwidget;QDockWidget *dockwidget_textbox; CPP源文件中的對象定義 //創建初始化按鈕,將要放到第一個窗…

python關鍵字驅動框架搭建_python webdriver混合驅動測試框架(數據驅動+關鍵字驅動)...

混合驅動:把數據驅動、關鍵字驅動結合起來一起使用testdata.txthttp://www.126.comhttp://www.sohu.comteststep.txtopen||chromevisit||${url}sleep||3主程序腳本hybrid.py#encodingutf-8import refrom selenium import webdriverimport timewith open("tests…

iOS-cocoapods使用方法

1.CocoaPods的安裝及使用:http://code4app.com/article/cocoapods-install-usagehttp://objccn.io/issue-6-4/http://www.jianshu.com/p/5fc15906c53a查看當前的源gem sources -lgem sources --remove https://rubygems.org///等有反應之后再敲入以下命令,添加淘寶鏡…

Tomcat 6連接池配置

Tomcat 6,配置了連接池,可是運行總是報HTTP Status 500 - javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class for connect URL null的錯誤,檢查URL沒有錯啊&#xff01…

Java并發教程–可調用,將來

從Java的第一個發行版開始,Java的美麗之處之一就是我們可以輕松編寫多線程程序并將異步處理引入我們的設計中。 Thread類和Runnable接口與Java的內存管理模型結合使用,意味著可以進行簡單的線程編程。 但是,如第3部分所述, Thread…

python基本運算符_06-Python基礎知識學習---基本運算符

算術運算符python支持的算數運算符與數學上計算的符號使用是一致的(x 5 , y 2):算術運算符描述示例兩個對象相加x y 7-兩個對象相減x - y 3*兩個對象相乘x * y 10/除,返回值保留整數和小數部分x / y 2.5//整除,只保留整數部分x // y …

java wait()和sleep() 的區別

之前在寫代碼的時候,如果需要讓線程等待一會,就直接使用sleep()方法,一直也沒有出過問題。而wait()方法的出場率很高,每次打一個句點的時候,對象的方法彈出來,總是能看到wait()在其中,wait()是一…

異常:com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據。

com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246) a…

Java中的數據庫架構導航

jOOQ的重要組成部分是數據庫架構導航模塊jooq-meta。 代碼生成器使用它來發現相關的架構對象。 我多次被問到為什么我要自己滾動而不使用其他庫,例如SchemaCrawler或SchemaSpy ,確實很遺憾我不能依賴其他穩定的第三方產品。 以下是有關數據庫架構導航的一…

python自動化測試的工具_python自動化測試(3)- 自動化框架及工具

3 基本示例如下示例也來自于官方文檔 basic_demo.py:# coding:utf-8"""基本的自動化測試腳本 basic_demo.py"""__author__ zhengimport unittestclass TestStringMethods(unittest.TestCase):def setUp(self):print init by setUp…

Html轉Word文檔,解決無法保存網絡圖片的問題

最近項目中需要這個功能,網上有很多word轉html的方法,但是html轉word的方法很少,因為html中的圖片轉換到本地比較麻煩; 開始的時候只能轉換不帶圖片的html內容,但是不符合要求,將html頁面中的圖片改成絕對路…

一不小心就掉大啦《數組使用注意》

今天程序提交答案總是不對,調試半天才發現本定義的是char s[4]{1,2,3,4} ; 程序運行過程中輸出才發現多了一個字符 printf("%s\n"); //結果12349 思前想后覺得可能是沒有字符數組結束符 (\0); 特別注意: 定義使用字符型數組時,應…

Java并發教程–阻塞隊列

如第3部分所述,Java 1.5中引入的線程池提供了核心支持,該支持很快成為許多Java開發人員的最愛。 在內部,這些實現巧妙地利用了Java 1.5中引入的另一種并發功能-阻塞隊列。 隊列 首先,簡要回顧一下什么是標準隊列。 在計算機科學…

json和字符串/數組/集合的互相轉換の神操作總結

一:前端字符串轉JSON的4種方式 1,eval方式解析,恐怕這是最早的解析方式了。 function strToJson(str){var json eval(( str ));return json; } 2,new Function形式,比較怪異哦。 function strToJson(str){var json (new Funct…

python 修改array_python 基礎_ 數組的 增刪改查3

數組是運用在多個數據存在一個變量中的,而在調用的時候可以調用所需要的數組。創建數組a [a,b,c,d,f]   #創建一個數組a其中有5個元素分別是abcdf1.查詢。所謂的查詢就是顯示變量a中一個或是一些元素print (a[1])  #打印出a變量中的序列1的元素,我們…

Android實現推送方式解決方案

Android實現推送方式解決方案 本文介紹在Android中實現推送方式的基礎知識及相關解決方案。推送功能在手機開發中應用的場景是越來起來了,不說別的,就我們手機上的新聞客戶端就時不j時的推送過來新的消息,很方便的閱讀最新的新聞信息。這種推…

NYOJ 2 括號配對問題

括號配對問題 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述 現在&#xff0c;有一行括號序列&#xff0c;請你檢查這行括號是否配對。 輸入第一行輸入一個數N&#xff08;0<N<100&#xff09;,表示有N組測試數據。后面的…