非常教程

Python参考手册

网络 | Internet

Cookie

注意

Cookie模块已被重命名为http.cookiesPython 3. 当将源代码转换为Python 3时,2to3工具将自动适应导入。

源代码: Lib / Cookie.py

Cookie模块定义了用于抽象cookie(HTTP状态管理机制)概念的类。它支持简单的仅字符串的cookie,并提供了一个抽象,让任何可序列化的数据类型作为cookie值。

该模块以前严格应用了RFC 2109RFC 2068规范中描述的分析规则。自从发现MSIE 3.0x不遵循这些规范中概述的字符规则,并且当处理Cookie时,许多当前的浏览器和服务器也放宽了解析规则。因此,所使用的解析规则不太严格。

的字符集,string.ascii_lettersstring.digits!#$%&'*+-.^_`|~表示所述一组由该模块中的Cookie名称(如允许有效字符key)。

注意

在遇到无效cookie时,CookieError如果您的cookie数据来自浏览器,则应始终准备无效数据并CookieError解析。

exception Cookie.CookieError

由于RFC 2109无效,异常失败:不正确的属性,不正确的Set-Cookie头等。

class Cookie.BaseCookie([input])

这个类是一个类似字典的对象,其键是字符串,其值是Morsel实例。请注意,将某个键设置为某个值后,该值将首先转换为Morsel包含键和值的值。

如果给出输入,则将其传递给load()方法。

class Cookie.SimpleCookie([input])

这个类派生自BaseCookie和覆盖value_decode()value_encode()str()分别是身份和身份。

class Cookie.SerialCookie([input])

这个类派生自BaseCookie并覆盖value_decode() value_encode() pickle.loads()pickle.dumps()

自2.3版弃用:从不受信任的cookie数据读取pickle值是一个巨大的安全漏洞,因为可以制作pickle字符串以在服务器上执行任意代码。它仅支持向后兼容性,并可能最终消失。

class Cookie.SmartCookie([input])

这个类来自于BaseCookie。它覆盖value_decode()pickle.loads(),如果它是一个有效的咸菜,否则本身的价值。它重写value_encode()pickle.dumps()除非它是一个字符串,在这种情况下它会返回值本身。

自2.3版弃用:SerialCookie此处适用的安全警告同样适用。

进一步的安全说明是必要的。为了向后兼容,Cookie模块导出一个名为“ Cookie只是别名”的类SmartCookie。这可能是一个错误,将来可能会被删除。你不应该Cookie在你的应用程序中使用这个类,因为你不应该使用这个SerialCookie类。

1. Cookie对象

BaseCookie.value_decode(val)

从字符串表示中返回一个解码值。返回值可以是任何类型。这个方法没有做任何事BaseCookie- 它存在,所以它可以被覆盖。

BaseCookie.value_encode(val)

返回一个编码值。val可以是任何类型,但返回值必须是字符串。这个方法没有做任何事BaseCookie- 它存在,所以它可以被覆盖。

一般来说,它应该是这样的情况,value_encode()并且value_decode()value_decode的范围上是相反的

BaseCookie.output([attrs[, header[, sep]]])

返回适合作为HTTP标头发送的字符串表示。ATTRS报头被发送到每一个Morseloutput()方法。sep用于将标头连接在一起,默认情况下是组合'\r\n'(CRLF)。

在版本2.5中更改:默认分隔符已更改'\n'为与cookie规范相匹配。

BaseCookie.js_output([attrs])

返回一个嵌入式JavaScript代码片段,如果在支持JavaScript的浏览器上运行,则会像HTTP头文件发送一样运行。

attrs的含义与英文中的相同output()

BaseCookie.load(rawdata)

如果rawdata是一个字符串,则将其解析为一个字符串HTTP_COOKIE并将其中的值添加为Morsels。如果是字典,则相当于:

for k, v in rawdata.items():
    cookie[k] = v

2. Morsel对象

class Cookie.Morsel

摘要一个键/值对,它具有一些RFC 2109属性。

Morsels是类似字典的对象,其键集是常量 - 有效的RFC 2109属性,它们是

  • expires
  • path
  • comment
  • domain
  • max-age
  • secure
  • version
  • httponly

该属性httponly指定cookie仅在HTTP请求中传输,并且无法通过JavaScript访问。这旨在缓解某些形式的跨站点脚本。

密钥不区分大小写。

2.6版新增功能:httponly添加了该属性。

Morsel.value

Cookie的价值。

Morsel.coded_value

Cookie的编码值 - 这是应该发送的内容。

Morsel.key

Cookie的名称。

Morsel.set(key, value, coded_value)

设置关键字coded_value属性。

Morsel.isReservedKey(K)

K是否是a的一组键Morsel

Morsel.output([attrs[, header]])

返回Morsel的字符串表示形式,适合作为HTTP头发送。默认情况下,除非给出attrs,否则包含所有属性,在这种情况下,它应该是要使用的属性列表。标题是默认的"Set-Cookie:"

Morsel.js_output([attrs])

返回一个可嵌入的JavaScript代码片段,如果在支持JavaScript的浏览器上运行,就会像HTTP头文件发送一样。

attrs的含义与英文中的相同output()

Morsel.OutputString([attrs])

返回表示Morsel的字符串,不包含任何周围的HTTP或JavaScript。

attrs的含义与英文中的相同output()

3.例子

以下示例演示如何使用该Cookie模块。

>>> import Cookie
>>> C = Cookie.SimpleCookie()
>>> C["fig"] = "newton"
>>> C["sugar"] = "wafer"
>>> print C # generate HTTP headers
Set-Cookie: fig=newton
Set-Cookie: sugar=wafer
>>> print C.output() # same thing
Set-Cookie: fig=newton
Set-Cookie: sugar=wafer
>>> C = Cookie.SimpleCookie()
>>> C["rocky"] = "road"
>>> C["rocky"]["path"] = "/cookie"
>>> print C.output(header="Cookie:")
Cookie: rocky=road; Path=/cookie
>>> print C.output(attrs=[], header="Cookie:")
Cookie: rocky=road
>>> C = Cookie.SimpleCookie()
>>> C.load("chips=ahoy; vienna=finger") # load from a string (HTTP header)
>>> print C
Set-Cookie: chips=ahoy
Set-Cookie: vienna=finger
>>> C = Cookie.SimpleCookie()
>>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";')
>>> print C
Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;"
>>> C = Cookie.SimpleCookie()
>>> C["oreo"] = "doublestuff"
>>> C["oreo"]["path"] = "/"
>>> print C
Set-Cookie: oreo=doublestuff; Path=/
>>> C["twix"] = "none for you"
>>> C["twix"].value
'none for you'
>>> C = Cookie.SimpleCookie()
>>> C["number"] = 7 # equivalent to C["number"] = str(7)
>>> C["string"] = "seven"
>>> C["number"].value
'7'
>>> C["string"].value
'seven'
>>> print C
Set-Cookie: number=7
Set-Cookie: string=seven
>>> # SerialCookie and SmartCookie are deprecated
>>> # using it can cause security loopholes in your code.
>>> C = Cookie.SerialCookie()
>>> C["number"] = 7
>>> C["string"] = "seven"
>>> C["number"].value
7
>>> C["string"].value
'seven'
>>> print C
Set-Cookie: number="I7\012."
Set-Cookie: string="S'seven'\012p1\012."
>>> C = Cookie.SmartCookie()
>>> C["number"] = 7
>>> C["string"] = "seven"
>>> C["number"].value
7
>>> C["string"].value
'seven'
>>> print C
Set-Cookie: number="I7\012."
Set-Cookie: string=seven
Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法