最近再次學習python,原本就是一個菜鳥,我按照 Python CGI編程 發現讀cookie 讀取不了,後來發現它這種寫的方式也不怎麼靠譜。javascript
Python中Cookie模塊(python3中爲http.cookies)提供了一個相似字典的特殊對象SimpleCookie,其中存儲並管理着稱爲Morsel的cookie值集合。
每一個Morsel都有name,value以及可選屬性(expires,path,domain,comment,max-age,secure,version,httponly)。
SimpleCookie可以使用output()方法建立以HTTP報頭形式表示的cookie數據輸出,用js_output()方法生成包含javascript代碼的字符串。html
寫cookie:java
import http.cookies import datetime import random expiration = datetime.datetime.now() + datetime.timedelta(days=30) cookie = http.cookies.SimpleCookie() cookie["session"] = random.randint(1,1000000000) cookie["session"]["domain"] = "" cookie["session"]["path"] = "/" cookie["session"]["expires"] = expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST") print("Content-Type:text/html") #print ("Set-Cookie: name='test';expires=Wed, 28 Aug 2016 18:30:00 GMT") print(cookie.output()) print() print(""" <html> <head><meta charset=gb2312></head> <body><h1>Cookie Set OK!</h1> <a href='/cookie_get.py'>get Cookie</a> </body> </html> """)
讀cookie:python
import os import http.cookies print("Conten-Type:text/html") print() print (""" <html> <head> <meta charset="gb2312"> <title>菜鳥教程(runoob.com)</title> </head> <body> <h1>讀取cookie信息</h1> """) if 'HTTP_COOKIE' in os.environ: cookie_string=os.environ.get("HTTP_COOKIE") print(cookie_string) c=http.cookies.SimpleCookie() c.load(cookie_string) try: data=c["session"].value print("cookie session:"+data+"<br>") except KeyError: print ("cookie 沒有設置或者已過去<br>") print (""" </body> </html> """)