面試時cookie和session的常問方式

2021-09-27 04:38:45 字數 3975 閱讀 6131

**面試題:

你是如何理解cookie的?談一談cookie
cookie

1.概念

cookie資訊是鍵值對的形式儲存key,value

儲存在客戶端的資料叫cookie

cookie資訊儲存在客戶端(當前瀏覽器)

cookie是基於網域名稱的(ip)

2.流程(大體流程)

請求過程(原理)

第一次請求過程

1.我們的瀏覽器第一次請求伺服器的時候,不會攜帶任何cookie資訊

2.伺服器接受到請求之後,發現 請求中沒有任何cookie資訊

3.伺服器設定乙個cookie資訊,這個cookie設定在響應中

4.我們的瀏覽器接受到這個響應之後,發現響應中有cookie資訊,瀏覽器會將這個cookie資訊儲存起來

第二次及其之後的請求過程

5.當我們的瀏覽器第二次及其之後的請求都會攜帶cookie資訊,cookie資訊是攜帶在請求頭中的

6.我們的伺服器接收到請求之後,發現請求中的cookie資訊,就知道是誰的請求了

3.原理,從http協議角度分析:

第一次請求:

1.我們是第一次請求伺服器,不會攜帶任何cookie資訊,請求頭中沒有任何cookie資訊

2.伺服器會為響應設定cookie資訊 響應頭中有set_cookie資訊

第二次及其之後的請求

3.我們第二次及其之後的請求都會攜帶cookie資訊,請求頭中有cookie資訊

4.(可選)在當前我們的**中,沒有在響應頭中設定cookie,所以響應頭中沒有set_cookie資訊

3.在開發過程中**使用了?

cookie是儲存在瀏覽器中的一段純文字資訊,建議不要儲存敏感資訊如密碼,因為電腦上的瀏覽器可能被其它人使用。

cookie 的用途之一是儲存使用者在特定**上的密碼和 id

4.在開發過程中遇到什麼印象深刻的地方?

def set_cookie(request):

# 1.先判斷有沒有cookie資訊

# 先假設沒有

# if request.cookies:

# pass

# else:

# 2.獲取使用者名稱

username = request.get.get('username')

# 3.因為假設沒有cookie資訊,所以伺服器就要設定cookie資訊

# cookie資訊是鍵值對的形式儲存key,value

# max_age 單位是秒

# 時間是 從伺服器接收到這個請求時間 + 秒數 計算之後的時間

# response.set_cookie('itcast1', 'python1') # 臨時cookie

# response.set_cookie('itcast2', 'python2', max_age=3600) # 有效期一小時

response.set_cookie('username', username, max_age=3600)

# 刪除cookie的2種方式

# response.delete_cookie(key)

# response.set_cookie(key,value,max_age=0)

# 4.返回響應

return response

def get_cookie(request):

# 第二次以及之後的請求(讀取)

# cookie資訊是在請求頭中

# 1.伺服器可以接收(檢視)cookie資訊

cookies = request.cookies

# cookies就是乙個字典

問題:換了瀏覽器,還能獲取到session資訊嗎?

不可以,因為session是依賴於cookie的,而cookie是儲存在客戶端的

不換瀏覽器的情況下,刪除session id 則獲取不到session資料,再去執行get_session的時候,會重新生成session id

概念

儲存在伺服器的資料叫 session

session需要依賴於cookie

如果瀏覽器禁用了cookie,則session不能實現

1.流程

1第次請求

1.我們第一次請求的時候可以攜帶一些資訊(使用者名稱/密碼)cookie中沒有任何資訊

2.當我們的伺服器接收到這個請求之後,進行使用者名稱和密碼的驗證,驗證沒有任何問題可以設定session資訊

3.在設定session資訊的同時(session資訊儲存在伺服器),伺服器會在響應頭中設定乙個session 的cookie資訊

4.客戶端(瀏覽器)在接收到響應之後,會將cookie資訊儲存起來(儲存session id資訊)

第二次及其之後的請求:

5.第二次及其之後的請求都會攜帶session id資訊 / 請求會攜帶cookie資訊, 其中有一項是sessionid, cookie資訊在請求頭中

6.當伺服器接收到這個請求之後,會獲取到sessionid資訊,然後進行驗證, 驗證成功,則可以獲取session資訊(session資訊儲存在伺服器)

2.原理

第一次請求:

1.第一次請求,(在請求頭中)沒有攜帶任何cookie資訊

2.我們在設定session的時候,session會做兩件事

1.將資料儲存在資料庫中

2.設定乙個cookie資訊,這個cookie資訊是以sessionid為key

cookie肯定會以響應的形式在響應頭**現

第二次及其之後的請求:

3.都會攜帶cookie資訊,特別是sessionid**
**操作:

def set_session(request):

# 1.cookie中沒有任何資訊

print(request.cookies)

# 2.對使用者名稱和密碼的驗證

# 假設認為使用者名稱和密碼正確

user_id = 6666

# 設定session資訊

# request.session 理解為字典

# 設定session的時候,session做了兩件事

# 1.將資料儲存在資料庫中

# 2.設定乙個cookie資訊, 這個cookie資訊是以sessionid為key

request.session[user_id] = user_id

# 返回響應

# 第二次及其之後的請求:

# 1.請求會攜帶cookie資訊, 其中有一項是sessionid, cookie資訊在請求頭中

print(request.cookies)

# 2.會獲取到session資訊然後進行驗證

# 驗證成功, 可以獲取session資訊

# request.session 字典

user_id = request.session['user_id']

user_id = request.session.get(user_id)

# 返回響應

javaweb中Cookie和Session實現

cookie是存在於瀏覽器的文字,用於儲存使用者的登入密碼等資料 session存在於服務端,用於跟蹤使用者登入狀態等 cookie cookies request.getcookies if cookies null cookies.length 0 else 在servelt中通過respons...

Servlet中Cookie和Session的學習

會話cookie 關閉瀏覽器,就失效 持久cookie 存放在客戶端上。在指定的期限內有效。是以檔案形式存放的 setmaxage 應用 自動登入 瀏覽記錄 購物車 http的請求是無狀態。客戶端與伺服器在通訊的時候,是無狀態的,其實就是客戶端在第二次來訪的時候,伺服器根本就不知道這個客戶端以前有沒...

面試時的「規矩」

基本禮儀 一般不應由親友陪同面試,避免給人留下不成熟的印象。不要緊張,保持自信和自然的笑容,一方面可以幫助你放鬆心情,令面試的氣氛變得更融洽愉快 另一方面,可令考官認為你充滿自信,能面對壓力。面試前 道明來意 告知接待員你是來應聘的,以便作出安排。應對所有職員保持禮貌,要知道,他們可能成為你的同事。...