让python cookie支持特殊字符

让python cookie支持特殊字符

先对cookie做下简单的介绍

cookie的作用:

tcp协议可以通过三次握手建立连接,客户端发送的多次请求可以通过句柄维护同一个连接,但是http协议是一种无状态的协议,对于浏览器发送的多次请求,服务器是无法区分是不是同一个浏览器发送的。这样就需要使用额外的数据维护会话。

服务端收到浏览器的请求,在响应的时候可以种cookie,这样客户端与服务端可以将cookie来回传递,从而维护一个session状态

cookie有2个必备的属性,那就是name,value,另外还有几个可选的属性,分别控制cookie的生存周期(expires),可见性及安全性(secure)。

 

废话半天,进入正题:

按照cookie的标准,一些特殊字符是不允许写入cookie的,但是有时候我们的开发人员很可爱,比如说,前段时间我就遇到一个,前端为了现实用户名信息,将邮箱直接写入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
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值