码迷,mamicode.com
首页 > 编程语言 > 详细

让python cookie支持特殊字符

时间:2017-05-27 10:27:05      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:str   pos   不同   请求   har   idm   区分   super   cli   

让python cookie支持特殊字符

先对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支持特殊字符

标签:str   pos   不同   请求   har   idm   区分   super   cli   

原文地址:http://www.cnblogs.com/yfceshi/p/6911319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!