讓python cookie支援特殊字元

2021-09-07 13:42:59 字數 1163 閱讀 4140

先對cookie做下簡單的介紹

cookie的作用:

tcp協議能夠通過三次握手建立連線。client傳送的多次請求能夠通過控制代碼維護同乙個連線。可是http協議是一種無狀態的協議。對於瀏覽器傳送的多次請求,server是無法區分是不是同乙個瀏覽器傳送的。這樣就須要使用額外的資料維護會話。

服務端收到瀏覽器的請求,在響應的時候能夠種cookie,這樣client與服務端能夠將cookie來回傳遞,從而維護乙個session狀態

cookie有2個必備的屬性,那就是name。value,另外還有幾個可選的屬性,分別控制cookie的生存週期(expires),可見性及安全性(secure)。

廢話半天,進入正題:

依照cookie的標準,一些特殊字元是不同意寫入cookie的,可是有時候我們的開發者非常可愛,比方說,前段時間我就遇到乙個,前端為了現有username資訊。將郵箱直接寫入cookie,後台在取其它cookie的時候。就會丟擲異常。

為此檢視了python的源**,重寫了cookie.morsel模組。

以下是**實現,在使用的時候由import cookie.py 代替import cookie,以下是cookie.py**:

#!/usr/bin/python

#-*- coding: utf-8-*-

#todo:該模組重構cookie.morsel使得get_cookie支援@,:等特殊字元

import cookie

import string

_morsel =cookie.morsel

legal_char =string.ascii_letters + string.digits +"!#$%&'*+-.^_`|~"+"@"

class morselhook(_morsel):

def set(self, key, val, coded_val,legalchars=cookie._legalchars+legal_char, idmap=string._idmap,translate=string.translate):

return super(morselhook, self).set(key,val, coded_val, legalchars, idmap, translate)

cookie.morsel =morselhook

python cookie和session及其運用

一 cookie及其用法 cookie是使用者登入後響應資訊 response headers 中的資料。是伺服器為了標記使用者,儲存在使用者本地的資料。裡面儲存了使用者的登入資訊,具有一定的時效性,會失效。response 200 意味著伺服器接收到並響應了登入請求,登入成功。提取cookie c...

讓mysql支援中文

我用spring ibatis mysql搭了乙個框架,但是中文顯示亂碼。解決問題的路徑 1 在資料庫連線的url 後加上 useunicode true characterencoding utf8 2 修改mysql的配置檔案my.ini 在 client 後加上default characte...

讓irrlicht 支援中文

看了官方引擎顯示文字的方法居然是影射位圖。實在悲劇,開發者居然沒考慮其他語言的問題,因為很多語言根本不由小量的字母組成,就算硬用中文字影射的方法,這個檔案不知道會有多大。再就是在渲染環境裡我們也沒可能讓美工來打字吧?再退一步好了,如果要設定字型大小這樣的設定,影射根本不實際。無奈下在官方的找有無方法...