让python cookie支持特殊字符
让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支持特殊字符的更多相关文章
- 如何让你的Python程序支持多语言
如何让你的Python程序支持多语言 本文介绍如何通过Python标准库gettext帮助你的程序支持多语言. 代码例子 import random guessesTaken = 0 print(_( ...
- 如何让python脚本支持命令行参数--getopt和click模块
一.如何让python脚本支持命令行参数 1.使用click模块 如何使用这个模块,在我前面的博客已经写过了,可参考:https://www.cnblogs.com/Zzbj/p/11309130.h ...
- python urllib2 支持 自定义cookie
先是在GOOGLE 上找了下, 发现就是只有2种方法,试了下,果然不行. 1, MozillaCookieJar 自定义保存到文件中 加载的时候不行,保存没问题. 2,opener.addheader ...
- python中http请求中添加cookie支持
python3中构造http的Request需要用到urllib.request. 有时会用到cookie. 比如在访问网站首页得到cookie,通过下面代码添加cookie: #insta ...
- 第11.2节 Python 正则表达式支持函数概览
为了大家熟悉re模块匹配文本的处理,本节将概要介绍与此处理有关的几个主要函数,提供了如下主要函数: 以上函数中的部分的三个重要参数说明如下: pattern都是代表匹配规则的模式字符串,string代 ...
- 第11.12节 Python元字符“|”支持的正则表达式多选一匹配模式
re模块支持多个正则表达式使用"|"(逻辑或)模式来组合,扫描目标字符串时, '|' 分隔开的正则表达式组合从左到右进行匹配,只要其中一个匹配成功就认为该组合匹配成功,不再进行组合 ...
- Python实现支持并发、断点续传的FTP
参考网上一个FTP程序,重写了一遍,并稍加扩展 一.要求 1. 支持多用户同时登录 2. 可以注册用户,密码使用md5加密 3. 可以登录已注册用户 4. 支持cd切换目录,ls查看目录子文件 5. ...
- python实现支持并发、断点续传的Ftp程序
一.要求 1.用户md5认证 2.支持多用户同时登陆(并发) 3.进入用户的命令行模式,支持cd切换目录,ls查看目录子文件 4.执行命令(ipconfig) 5.传输文件: a.支持断点续传 b.传 ...
- Python Cookie HTTP获取cookie并处理
Cookie模块同样是Python标准库中的一员,它定义了一些类来解析和创建HTTP 的 cookie头部信息. 一.创建和设置Cookie >>> import Cookie #导 ...
随机推荐
- Android如何获取屏幕的分辨
在实际的项目中,我们经常要得到当前屏幕的分辨率,进行机型适配,得到分辨率其实很简单,主要有两种方法. 方法一: Display mDisplay = getWindowManager().getDef ...
- 计算gcd Exercise07_14
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:计算gcd * */ public class Exercise07_14 ...
- Manthan, Codefest 16 H. Fibonacci-ish II 大力出奇迹 莫队 线段树 矩阵
H. Fibonacci-ish II 题目连接: http://codeforces.com/contest/633/problem/H Description Yash is finally ti ...
- nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转
nginx 域名跳转 Nginx跳转自动到www域名规则配置,如果设置使 mgcrazy.com域名在用户访问的时候自动跳转到 www.mgcrazy.com呢?在网上找了好多资料都没有一个完整能解决 ...
- Inno Setup自定义卸载文件名称的脚本
Inno Setup 支持在同一个目录中安装多个应用程序,所以根据安装的先后次序自动将卸载程序文件命名为 unins000.exe,unins001.exe,unins002.exe 等等.这是 IN ...
- Inno Setup入门(十七)——Inno Setup类参考(3)
标签 标签(Label)是用来显示文本的主要组件之一,也是窗口应用程序中最常用的组件之一,通过对标签的使用,将能够给用户提供更加详细的信息. Pascal脚本中的标签由类TlLabel实现,该 ...
- Android Json的使用(2) 使用Jackson解析和生成json
使用Jackson的三种方式 数据绑定模式:使用最方便 流模式:性能最佳 树模式:最灵活 以最常用的数据绑定模式为例 Json数据如下 { "name" : { "fir ...
- Oracle 11gR2 RAC 数据库不能连接(ORA-12537: TNS:connection closed)
Oracle 11gR2 RAC 数据库不能连接(ORA-12537: TNS:connection closed)的解决 [oracle@rac01 ~]$ sqlplus /nolog SQL*P ...
- Ubuntu下轻松安装virtualbox
转自:http://blog.csdn.net/flm2003/article/details/8168628 以下假设你的Ubuntu系统版本为11.10的64位版本,进行如下操作: 1.到http ...
- 如何限制jenkins的任务在某个节点上执行
1.首先给节点打标签,一个节点可以打多个标签,中间使用空格分开 2.其次在每个任务上标记执行的标签位置,这样这个任务就在包含这些标签的节点上执行 3.通过这个方法限制的任务,只会跑在指定节点上,即是当 ...