**面試題:
你是如何理解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的請求是無狀態。客戶端與伺服器在通訊的時候,是無狀態的,其實就是客戶端在第二次來訪的時候,伺服器根本就不知道這個客戶端以前有沒...
面試時的「規矩」
基本禮儀 一般不應由親友陪同面試,避免給人留下不成熟的印象。不要緊張,保持自信和自然的笑容,一方面可以幫助你放鬆心情,令面試的氣氛變得更融洽愉快 另一方面,可令考官認為你充滿自信,能面對壓力。面試前 道明來意 告知接待員你是來應聘的,以便作出安排。應對所有職員保持禮貌,要知道,他們可能成為你的同事。...