python socket编程:实现redirect函数、cookie和session
在Flask框架中有一個redirect函數(shù),用于實現(xiàn)頁面的跳轉,現(xiàn)在我們來實現(xiàn)它。原理就是:當瀏覽器接受到服務器響應的狀態(tài)碼是301或者302時,表示請求的頁面已經(jīng)永久或臨時性轉移到了新的位置,而這個新的位置儲存在響應的header里Locaiton這個字段。例如一個實現(xiàn)跳轉的響應如下:
- HTTP/1.1 302 OK
- Content-Type: textml
- Location: /login
這是一個很簡單的http響應,狀態(tài)碼302表示原先請求的網(wǎng)頁臨時性轉移到了/login(‘OK’這個沒有影響,可以改成任意東西,如’JUMP’),很明顯這就是用戶請求的頁面是需要登錄才能查看的。因此redirect函數(shù)可以這樣寫:
學習python中有什么不懂的地方,小編這里推薦加小編的python學習群:895,817, 687
有任何不懂的都可以在里面交流,還有很好的視頻教程pdf學習資料,大家一起學習交流!
實現(xiàn)cookie和session
cookie的實現(xiàn)很簡單,在服務器返回的響應中,header里增加Set-Cookie,瀏覽器接受到Set-Cookie中的value,下次訪問這個網(wǎng)站的請求中就會帶上這個cookie。編寫一個增加cookie的函數(shù):
假設用戶登錄驗證成功之后,我們用add_cookie將其用戶名username存入到cookie中返回給瀏覽器,例如承接前文,用戶登錄成功后給其返回一個302跳轉的響應,我們在其中再加入cookie,此時response如下:
那么瀏覽器下次請求,request的header里就會帶上Cookie: Harp這一行了。此時服務端解析request,根據(jù)cookie就知道當前用戶是登陸狀態(tài)的。
顯然,直接在cookie里寫用戶的username是不安全的。我們可以把username存在session里,假設session是一個字典,用戶登錄驗證成功后,隨機生成一個長的字符串session_id作為key,username作為value存入session中,然后把session_id作為cookie返回給瀏覽器,瀏覽器下次請求時候帶上的cookie內容為這個session_id,我們去session里取對應的value即可。
總結
以上是生活随笔為你收集整理的python socket编程:实现redirect函数、cookie和session的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信和Python之间,还能这样玩,你所
- 下一篇: Python的from import和i