cookie
的本質其實就是在瀏覽器端保存的鍵值對, 每當瀏覽器端發送一次請求, 都會將這些鍵值對附加在請求中併發送給服務器端.python
咱們簡單使用下python
中的cookie
: web
home.py
文件: 瀏覽器
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.web
class IndexHandle(tornado.web.RequestHandler):
def get(self):
username = self.get_argument('u', None)
if not username:
self.set_cookie('name', 'test')
self.set_secure_cookie('user', 'test')
self.redirect('/admin')
def post(self):
pass
class AdminHandle(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
name = self.get_cookie('name', None)
user = self.get_cookie('user', None)
print('name: ', name, "\nuser: ", user)複製代碼
start.py
文件: 服務器
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.web, tornado.ioloop
from controllers import home
if __name__ == '__main__':
settings = {
# 模板路徑配置
'template_path': 'views',
"cookie_secret": 'test-secret,'
}
application = tornado.web.Application([
(r"/index", home.IndexHandle),
(r"/admin", home.AdminHandle),
], **settings)
application.listen(80)
tornado.ioloop.IOLoop.instance().start()複製代碼
self.set_cookie('name', 'test')
設置未加密的cookie
, 鍵爲'name', 值爲test
self.set_secure_cookie('user', 'test')
設置加密cookie
, 鍵爲'user', 值爲test
. 設置加密cookie
咱們須要在配置中添加自定義的加密串(俗稱對加密結果加鹽)"cookie_secret": 'test-secret,'
name = self.get_cookie('name', None)
獲取指定key
未加密的cookie
的值user = self.get_cookie('user', None)
獲取指定key
的加密後的cookie
的值set_cookie()
和set_secure_cookie()
都用如下常見參數
name
表示傳入cookie
的鍵value
表示傳入cookie
的name
對應的值domain=None
表示域名expires=None
設置過時時間, 這裏單位爲秒path="/"
表示當前的cookie
在那些路徑下有效, /
表示當前域名下全部的路徑均有效expires_days=None
設置過時時間, 單位爲天接下來咱們談談加密cookie
的加密和解密原理: cookie
cookie
中的base64(test)
也就是加密後的值和時間戳再加上cookie_secret
生成新的加密串和加密cookie
中的加密串比較, 若相同則合法驗證經過, 而後再經過反解加密base64(test)
取其原本的值