让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.Morsellegal_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
转载于:https://www.cnblogs.com/yfceshi/p/6911319.html
让python cookie支持特殊字符相关推荐
- python不支持字符类型、单个字符也作为字符串使用_Python 字符串
Python 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var ...
- python不支持单字符类型_Python数据类型之字符串
1. Python字符串的创建 字符串是Python中最常见的数据类型,通常使用单引号或双引号来定义一个字符串,如下: str = "我是字符串" str1 = '我也是字符串' ...
- cpp-netlib笔记三-Cookie支持测试
Title:cpp-netlib笔记三-Cookie支持测试 Author:Kagula Date:2017-06-02 Environment: [1]Boost 1.64 本机安装目录 D:\SD ...
- ClewareControl 2.4 发布,传感器控制程序,增加对 python 的支持
为什么80%的码农都做不了架构师?>>> ClewareControl 2.4 增加对 python 的支持,可轻松开发使用该接口的相关应用. Clewarecontrol 可 ...
- Supporting Python 3(支持python3)——常见的迁移问题
2019独角兽企业重金招聘Python工程师标准>>> 常见的迁移问题 如果你按照该建议来确保你的代码使用Python 2.7 - 3来运行没有警告,一些现在会遇到的简单错误都是可以 ...
- python不支持以下哪种数据类型_Python 不支持以下哪种数据类型?
Python 不支持以下哪种数据类型? 答:char 中国大学MOOC: 为了充分利用学习时间,下列方法可行的是: 答:尽量选择理想的固定场所学习\n充分利用等候和其它碎片时间\n把握一天中的最佳状态 ...
- python显示无效语法怎么处理-Python不支持 i ++ 语法的原因解析
简要讨论为什么它不提供++作为运算符 正常情况下,当有人问起++原因而不是Python中的运算符时,这一行引起了我的注意. 如果您想知道最初的原因,则必须翻阅旧的Python邮件列表,或询问那里的某个 ...
- anaconda新建python2环境安装不了jupyterlab_Anaconda 5.0.0 JupyterLab 0.27.0 中配置多Python环境支持...
Anaconda 5.0.0 JupyterLab 0.27.0 中配置多Python环境支持 概述 Anaconda 5.0.0 中自带了 JupyterLab 0.27.0 版本,这是 Anaco ...
- 下列数据类型中python不支持的是_ 下列选项中 ,Python 不支持的数据类型有 ( ) 。_学小易找答案...
[单选题] 下列标识符中 , 合法的是 ( ) . [简答题]说明轴承代号7204AC表达的含义. [判断题]type() 函数可以查看变量的数据类型. ( ) [名词解释]限界 [单选题]体育教学 ...
最新文章
- mysql系列十、mysql索引结构的实现B+树/B-树原理
- 【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
- 应用编排与管理:Job DaemonSet
- SAP Spartacus TypeScript源代码中的三个点用法
- shiro 的 @RequiresPermissions 注解使用
- java integer 不变模式_《JAVA与模式》之不变模式
- DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)
- mysql 索引优化分析
- 微信小程序图片全屏显示
- 计算机专业关于Java读书笔记_《Java8学习笔记》读书笔记(四)
- 通过动态NAT实现内网访问外网,通过静态NAT实现外网访问内网的WEB服务器
- BJFU_数据结构习题_256病毒感染监测
- android dialog设置背景图片,如何为Dialog设置背景图片?
- 沐阳Git笔记01新建仓库、配置local用户信息
- js百度地图获取当前定位经纬度及省市区
- 浆轮机器人:游泳池漂浮碎屑的清理大师
- 《布尔教育php设计模式教程 共17课 》完整版
- ffmpeg视频播放过程
- [予纯 · 星火 - 1] 女生用品与物理化学
- 01比特串异或 python_异或