mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-09 07:24:04 +08:00
48 lines
31 KiB
HTML
48 lines
31 KiB
HTML
<div class="body" role="main"><div class="section" id="module-http.cookies"><h1><span class="yiyi-st" id="yiyi-10">21.23. <a class="reference internal" href="#module-http.cookies" title="http.cookies: Support for HTTP state management (cookies)."><code class="xref py py-mod docutils literal"><span class="pre">http.cookies</span></code></a> - HTTP状态管理</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/http/cookies.py">Lib / http / cookies.py</a></span></p><p><span class="yiyi-st" id="yiyi-12"><a class="reference internal" href="#module-http.cookies" title="http.cookies: Support for HTTP state management (cookies)."><code class="xref py py-mod docutils literal"><span class="pre">http.cookies</span></code></a>模块定义用于抽象cookie概念的类,即HTTP状态管理机制。</span><span class="yiyi-st" id="yiyi-13">它支持简单的仅字符串的cookie,并提供一个抽象,使任何可序列化的数据类型作为cookie值。</span></p><p><span class="yiyi-st" id="yiyi-14">该模块以前严格地应用在<span class="target" id="index-0"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a>和<span class="target" id="index-1"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2068.html"><strong>RFC 2068</strong></a>规范中描述的解析规则。</span><span class="yiyi-st" id="yiyi-15">后来发现MSIE 3.0x不遵循这些规范中列出的字符规则,并且很多当前的浏览器和服务器在处理Cookie时放宽了解析规则。</span><span class="yiyi-st" id="yiyi-16">因此,使用的解析规则有点不太严格。</span></p><p><span class="yiyi-st" id="yiyi-17">字符集<a class="reference internal" href="string.html#string.ascii_letters" title="string.ascii_letters"><code class="xref py py-data docutils literal"><span class="pre">string.ascii_letters</span></code></a>,<a class="reference internal" href="string.html#string.digits" title="string.digits"><code class="xref py py-data docutils literal"><span class="pre">string.digits</span></code></a>和<code class="docutils literal"><span class="pre">!#$%&'*+-.^_`|~:</span></code>表示此模块在Cookie名称中允许的有效字符集(如<a class="reference internal" href="#http.cookies.Morsel.key" title="http.cookies.Morsel.key"><code class="xref py py-attr docutils literal"><span class="pre">key</span></code></a>)。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-18"><span class="versionmodified">在版本3.3中已更改:</span>允许“:”作为有效的Cookie名称字符。</span></p></div><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-19">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-20">遇到无效的Cookie时,会出现<a class="reference internal" href="#http.cookies.CookieError" title="http.cookies.CookieError"><code class="xref py py-exc docutils literal"><span class="pre">CookieError</span></code></a>,因此如果您的Cookie数据来自浏览器,则应该始终准备无效的数据,并在解析时捕获<a class="reference internal" href="#http.cookies.CookieError" title="http.cookies.CookieError"><code class="xref py py-exc docutils literal"><span class="pre">CookieError</span></code></a>。</span></p></div><dl class="exception"><dt id="http.cookies.CookieError"><span class="yiyi-st" id="yiyi-21"> <em class="property">exception </em><code class="descclassname">http.cookies.</code><code class="descname">CookieError</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-22">由于<span class="target" id="index-2"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a>无效:不正确的属性,不正确的<em class="mailheader">Set-Cookie</em>标题等而导致异常失败</span></p></dd></dl><dl class="class"><dt id="http.cookies.BaseCookie"><span class="yiyi-st" id="yiyi-23"> <em class="property">class </em><code class="descclassname">http.cookies.</code><code class="descname">BaseCookie</code><span class="sig-paren">(</span><span class="optional">[</span><em>input</em><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-24">此类是类字典对象,其键是字符串,其值为<a class="reference internal" href="#http.cookies.Morsel" title="http.cookies.Morsel"><code class="xref py py-class docutils literal"><span class="pre">Morsel</span></code></a>实例。</span><span class="yiyi-st" id="yiyi-25">请注意,将键设置为值时,首先将该值转换为包含键和值的<a class="reference internal" href="#http.cookies.Morsel" title="http.cookies.Morsel"><code class="xref py py-class docutils literal"><span class="pre">Morsel</span></code></a>。</span></p><p><span class="yiyi-st" id="yiyi-26">如果给定<em>输入</em>,则将其传递到<a class="reference internal" href="#http.cookies.BaseCookie.load" title="http.cookies.BaseCookie.load"><code class="xref py py-meth docutils literal"><span class="pre">load()</span></code></a>方法。</span></p></dd></dl><dl class="class"><dt id="http.cookies.SimpleCookie"><span class="yiyi-st" id="yiyi-27"> <em class="property">class </em><code class="descclassname">http.cookies.</code><code class="descname">SimpleCookie</code><span class="sig-paren">(</span><span class="optional">[</span><em>input</em><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-28">此类派生自<a class="reference internal" href="#http.cookies.BaseCookie" title="http.cookies.BaseCookie"><code class="xref py py-class docutils literal"><span class="pre">BaseCookie</span></code></a>,并覆盖<code class="xref py py-meth docutils literal"><span class="pre">value_decode()</span></code>和<code class="xref py py-meth docutils literal"><span class="pre">value_encode()</span></code>为标识,<a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-func docutils literal"><span class="pre">str()</span></code></a>分别。</span></p></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-29">也可以看看</span></p><dl class="last docutils"><dt><span class="yiyi-st" id="yiyi-30">模块<a class="reference internal" href="http.cookiejar.html#module-http.cookiejar" title="http.cookiejar: Classes for automatic handling of HTTP cookies."><code class="xref py py-mod docutils literal"><span class="pre">http.cookiejar</span></code></a></span></dt><dd><span class="yiyi-st" id="yiyi-31">web <em>客户端的HTTP cookie处理</em>。</span><span class="yiyi-st" id="yiyi-32"><a class="reference internal" href="http.cookiejar.html#module-http.cookiejar" title="http.cookiejar: Classes for automatic handling of HTTP cookies."><code class="xref py py-mod docutils literal"><span class="pre">http.cookiejar</span></code></a>和<a class="reference internal" href="#module-http.cookies" title="http.cookies: Support for HTTP state management (cookies)."><code class="xref py py-mod docutils literal"><span class="pre">http.cookies</span></code></a>模块不依赖于彼此。</span></dd><dt><span class="yiyi-st" id="yiyi-33"><span class="target" id="index-3"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a> - HTTP状态管理机制</span></dt><dd><span class="yiyi-st" id="yiyi-34">这是由该模块实现的状态管理规范。</span></dd></dl></div><div class="section" id="cookie-objects"><h2><span class="yiyi-st" id="yiyi-35">21.23.1. </span><span class="yiyi-st" id="yiyi-36">Cookie对象</span></h2><dl class="method"><dt id="http.cookies.BaseCookie.value_decode"><span class="yiyi-st" id="yiyi-37"> <code class="descclassname">BaseCookie.</code><code class="descname">value_decode</code><span class="sig-paren">(</span><em>val</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-38">从字符串表示返回解码值。</span><span class="yiyi-st" id="yiyi-39">返回值可以是任何类型。</span><span class="yiyi-st" id="yiyi-40">此方法在<a class="reference internal" href="#http.cookies.BaseCookie" title="http.cookies.BaseCookie"><code class="xref py py-class docutils literal"><span class="pre">BaseCookie</span></code></a>中不执行任何操作 - 它存在,因此可以覆盖。</span></p></dd></dl><dl class="method"><dt id="http.cookies.BaseCookie.value_encode"><span class="yiyi-st" id="yiyi-41"> <code class="descclassname">BaseCookie.</code><code class="descname">value_encode</code><span class="sig-paren">(</span><em>val</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-42">返回编码值。</span><span class="yiyi-st" id="yiyi-43"><em>val</em>可以是任何类型,但返回值必须是字符串。</span><span class="yiyi-st" id="yiyi-44">此方法在<a class="reference internal" href="#http.cookies.BaseCookie" title="http.cookies.BaseCookie"><code class="xref py py-class docutils literal"><span class="pre">BaseCookie</span></code></a>中不执行任何操作 - 它存在,因此可以覆盖。</span></p><p><span class="yiyi-st" id="yiyi-45">一般来说,应该是<a class="reference internal" href="#http.cookies.BaseCookie.value_encode" title="http.cookies.BaseCookie.value_encode"><code class="xref py py-meth docutils literal"><span class="pre">value_encode()</span></code></a>和<a class="reference internal" href="#http.cookies.BaseCookie.value_decode" title="http.cookies.BaseCookie.value_decode"><code class="xref py py-meth docutils literal"><span class="pre">value_decode()</span></code></a>是<em>value_decode</em>范围内的反转。</span></p></dd></dl><dl class="method"><dt id="http.cookies.BaseCookie.output"><span class="yiyi-st" id="yiyi-46"> <code class="descclassname">BaseCookie.</code><code class="descname">output</code><span class="sig-paren">(</span><em>attrs=None</em>, <em>header='Set-Cookie:'</em>, <em>sep='\r\n'</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-47">返回适合作为HTTP头发送的字符串表示。</span><span class="yiyi-st" id="yiyi-48"><em>attrs</em>和<em>头</em>被发送到每个<a class="reference internal" href="#http.cookies.Morsel" title="http.cookies.Morsel"><code class="xref py py-class docutils literal"><span class="pre">Morsel</span></code></a>的<a class="reference internal" href="#http.cookies.BaseCookie.output" title="http.cookies.BaseCookie.output"><code class="xref py py-meth docutils literal"><span class="pre">output()</span></code></a>方法。</span><span class="yiyi-st" id="yiyi-49"><em>sep</em>用于将标头连接在一起,默认情况下是组合<code class="docutils literal"><span class="pre">'\r\n'</span></code>(CRLF)。</span></p></dd></dl><dl class="method"><dt id="http.cookies.BaseCookie.js_output"><span class="yiyi-st" id="yiyi-50"> <code class="descclassname">BaseCookie.</code><code class="descname">js_output</code><span class="sig-paren">(</span><em>attrs=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-51">返回一个可嵌入的JavaScript代码段,如果在支持JavaScript的浏览器上运行,则会如同发送HTTP标头一样运行。</span></p><p><span class="yiyi-st" id="yiyi-52"><em>attrs</em>的含义与<a class="reference internal" href="#http.cookies.BaseCookie.output" title="http.cookies.BaseCookie.output"><code class="xref py py-meth docutils literal"><span class="pre">output()</span></code></a>中的含义相同。</span></p></dd></dl><dl class="method"><dt id="http.cookies.BaseCookie.load"><span class="yiyi-st" id="yiyi-53"> <code class="descclassname">BaseCookie.</code><code class="descname">load</code><span class="sig-paren">(</span><em>rawdata</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-54">如果<em>rawdata</em>是字符串,请将其解析为<code class="docutils literal"><span class="pre">HTTP_COOKIE</span></code>,并添加在<a class="reference internal" href="#http.cookies.Morsel" title="http.cookies.Morsel"><code class="xref py py-class docutils literal"><span class="pre">Morsel</span></code></a>中找到的值。如果它是一个字典,它等效于:</span></p><pre><code class="language-python"><span></span><span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">rawdata</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||
<span class="n">cookie</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span>
|
||
</code></pre></dd></dl></div><div class="section" id="morsel-objects"><h2><span class="yiyi-st" id="yiyi-55">21.23.2. </span><span class="yiyi-st" id="yiyi-56">Morsel对象</span></h2><dl class="class"><dt id="http.cookies.Morsel"><span class="yiyi-st" id="yiyi-57"> <em class="property">class </em><code class="descclassname">http.cookies.</code><code class="descname">Morsel</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-58">抽象一个键/值对,它有一些<span class="target" id="index-4"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a>属性。</span></p><p><span class="yiyi-st" id="yiyi-59">Morsels是类似字典的对象,其键集是常量 - 有效的<span class="target" id="index-5"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a>属性,</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-60"><code class="docutils literal"><span class="pre">expires</span></code></span></li><li><span class="yiyi-st" id="yiyi-61"><code class="docutils literal"><span class="pre">path</span></code></span></li><li><span class="yiyi-st" id="yiyi-62"><code class="docutils literal"><span class="pre">comment</span></code></span></li><li><span class="yiyi-st" id="yiyi-63"><code class="docutils literal"><span class="pre">domain</span></code></span></li><li><span class="yiyi-st" id="yiyi-64"><code class="docutils literal"><span class="pre">max-age</span></code></span></li><li><span class="yiyi-st" id="yiyi-65"><code class="docutils literal"><span class="pre">secure</span></code></span></li><li><span class="yiyi-st" id="yiyi-66"><code class="docutils literal"><span class="pre">version</span></code></span></li><li><span class="yiyi-st" id="yiyi-67"><code class="docutils literal"><span class="pre">httponly</span></code></span></li></ul><p><span class="yiyi-st" id="yiyi-68">属性<code class="xref py py-attr docutils literal"><span class="pre">httponly</span></code>指定Cookie仅在HTTP请求中传输,不能通过JavaScript访问。</span><span class="yiyi-st" id="yiyi-69">这旨在减轻某些形式的跨站点脚本。</span></p><p><span class="yiyi-st" id="yiyi-70">键是不区分大小写的,其默认值为<code class="docutils literal"><span class="pre">''</span></code>。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-71"><span class="versionmodified">在版本3.5中更改:</span> <code class="xref py py-meth docutils literal"><span class="pre">__eq__()</span></code>现在将<a class="reference internal" href="#http.cookies.Morsel.key" title="http.cookies.Morsel.key"><code class="xref py py-attr docutils literal"><span class="pre">key</span></code></a>和<a class="reference internal" href="#http.cookies.Morsel.value" title="http.cookies.Morsel.value"><code class="xref py py-attr docutils literal"><span class="pre">value</span></code></a>纳入考虑。</span></p></div></dd></dl><dl class="attribute"><dt id="http.cookies.Morsel.value"><span class="yiyi-st" id="yiyi-72"> <code class="descclassname">Morsel.</code><code class="descname">value</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-73">Cookie的值。</span></p><div class="deprecated"><p><span class="yiyi-st" id="yiyi-74"><span class="versionmodified">自版本3.5起已弃用:</span>指定为<code class="docutils literal"><span class="pre">value</span></code>;请改用<a class="reference internal" href="#http.cookies.Morsel.set" title="http.cookies.Morsel.set"><code class="xref py py-meth docutils literal"><span class="pre">set()</span></code></a>。</span></p></div></dd></dl><dl class="attribute"><dt id="http.cookies.Morsel.coded_value"><span class="yiyi-st" id="yiyi-75"> <code class="descclassname">Morsel.</code><code class="descname">coded_value</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-76">Cookie的编码值 - 这是应该发送的内容。</span></p><div class="deprecated"><p><span class="yiyi-st" id="yiyi-77"><span class="versionmodified">自版本3.5之后已弃用:</span>分配到<code class="docutils literal"><span class="pre">coded_value</span></code>;请改用<a class="reference internal" href="#http.cookies.Morsel.set" title="http.cookies.Morsel.set"><code class="xref py py-meth docutils literal"><span class="pre">set()</span></code></a>。</span></p></div></dd></dl><dl class="attribute"><dt id="http.cookies.Morsel.key"><span class="yiyi-st" id="yiyi-78"> <code class="descclassname">Morsel.</code><code class="descname">key</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-79">Cookie的名称。</span></p><div class="deprecated"><p><span class="yiyi-st" id="yiyi-80"><span class="versionmodified">自版本3.5之后已弃用:</span>分配到<code class="docutils literal"><span class="pre">key</span></code>;请改用<a class="reference internal" href="#http.cookies.Morsel.set" title="http.cookies.Morsel.set"><code class="xref py py-meth docutils literal"><span class="pre">set()</span></code></a>。</span></p></div></dd></dl><dl class="method"><dt id="http.cookies.Morsel.set"><span class="yiyi-st" id="yiyi-81"> <code class="descclassname">Morsel.</code><code class="descname">set</code><span class="sig-paren">(</span><em>key</em>, <em>value</em>, <em>coded_value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-82">设置<em>键</em>,<em>值</em>和<em>coded_value</em>属性。</span></p><div class="deprecated"><p><span class="yiyi-st" id="yiyi-83"><span class="versionmodified">自版本3.5后已弃用:</span>未记录的<em>LegalChars</em>参数将被忽略,并将在以后的版本中删除。</span></p></div></dd></dl><dl class="method"><dt id="http.cookies.Morsel.isReservedKey"><span class="yiyi-st" id="yiyi-84"> <code class="descclassname">Morsel.</code><code class="descname">isReservedKey</code><span class="sig-paren">(</span><em>K</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-85">是否<em>K</em>是<a class="reference internal" href="#http.cookies.Morsel" title="http.cookies.Morsel"><code class="xref py py-class docutils literal"><span class="pre">Morsel</span></code></a>的键集合的成员。</span></p></dd></dl><dl class="method"><dt id="http.cookies.Morsel.output"><span class="yiyi-st" id="yiyi-86"> <code class="descclassname">Morsel.</code><code class="descname">output</code><span class="sig-paren">(</span><em>attrs=None</em>, <em>header='Set-Cookie:'</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-87">返回Morsel的字符串表示形式,适合作为HTTP标头发送。</span><span class="yiyi-st" id="yiyi-88">默认情况下,包括所有属性,除非给出<em>attrs</em>,在这种情况下,它应该是要使用的属性列表。</span><span class="yiyi-st" id="yiyi-89"><em>标题</em>默认为<code class="docutils literal"><span class="pre">"Set-Cookie:"</span></code>。</span></p></dd></dl><dl class="method"><dt id="http.cookies.Morsel.js_output"><span class="yiyi-st" id="yiyi-90"> <code class="descclassname">Morsel.</code><code class="descname">js_output</code><span class="sig-paren">(</span><em>attrs=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-91">返回一个可嵌入的JavaScript代码段,如果在支持JavaScript的浏览器上运行,则会如同发送HTTP标头一样运行。</span></p><p><span class="yiyi-st" id="yiyi-92"><em>attrs</em>的含义与<a class="reference internal" href="#http.cookies.Morsel.output" title="http.cookies.Morsel.output"><code class="xref py py-meth docutils literal"><span class="pre">output()</span></code></a>中的含义相同。</span></p></dd></dl><dl class="method"><dt id="http.cookies.Morsel.OutputString"><span class="yiyi-st" id="yiyi-93"> <code class="descclassname">Morsel.</code><code class="descname">OutputString</code><span class="sig-paren">(</span><em>attrs=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-94">返回一个表示Morsel的字符串,没有任何周围的HTTP或JavaScript。</span></p><p><span class="yiyi-st" id="yiyi-95"><em>attrs</em>的含义与<a class="reference internal" href="#http.cookies.Morsel.output" title="http.cookies.Morsel.output"><code class="xref py py-meth docutils literal"><span class="pre">output()</span></code></a>中的含义相同。</span></p></dd></dl><dl class="method"><dt id="http.cookies.Morsel.update"><span class="yiyi-st" id="yiyi-96"> <code class="descclassname">Morsel.</code><code class="descname">update</code><span class="sig-paren">(</span><em>values</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-97">使用字典中的值<em>值</em>更新Morsel字典中的值。</span><span class="yiyi-st" id="yiyi-98">如果<em>值</em> dict中的任何键不是有效的<span class="target" id="index-6"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a>属性,则引发错误。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-99"><span class="versionmodified">在3.5版本中更改:</span>无效键出现错误。</span></p></div></dd></dl><dl class="method"><dt id="http.cookies.Morsel.copy"><span class="yiyi-st" id="yiyi-100"> <code class="descclassname">Morsel.</code><code class="descname">copy</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-101">返回Morsel对象的浅副本。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-102"><span class="versionmodified">在版本3.5中更改:</span>返回Morsel对象而不是dict。</span></p></div></dd></dl><dl class="method"><dt id="http.cookies.Morsel.setdefault"><span class="yiyi-st" id="yiyi-103"> <code class="descclassname">Morsel.</code><code class="descname">setdefault</code><span class="sig-paren">(</span><em>key</em>, <em>value=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-104">如果密钥不是有效的<span class="target" id="index-7"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc2109.html"><strong>RFC 2109</strong></a>属性,则引发错误,否则与<a class="reference internal" href="stdtypes.html#dict.setdefault" title="dict.setdefault"><code class="xref py py-meth docutils literal"><span class="pre">dict.setdefault()</span></code></a>相同。</span></p></dd></dl></div><div class="section" id="example"><h2><span class="yiyi-st" id="yiyi-105">21.23.3. </span><span class="yiyi-st" id="yiyi-106">示例</span></h2><p><span class="yiyi-st" id="yiyi-107">以下示例演示如何使用<a class="reference internal" href="#module-http.cookies" title="http.cookies: Support for HTTP state management (cookies)."><code class="xref py py-mod docutils literal"><span class="pre">http.cookies</span></code></a>模块。</span></p><pre><code class="language-python"><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">http</span> <span class="k">import</span> <span class="n">cookies</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"fig"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"newton"</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"sugar"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"wafer"</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="c1"># generate HTTP headers</span>
|
||
<span class="go">Set-Cookie: fig=newton</span>
|
||
<span class="go">Set-Cookie: sugar=wafer</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">output</span><span class="p">())</span> <span class="c1"># same thing</span>
|
||
<span class="go">Set-Cookie: fig=newton</span>
|
||
<span class="go">Set-Cookie: sugar=wafer</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"rocky"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"road"</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"rocky"</span><span class="p">][</span><span class="s2">"path"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"/cookie"</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">header</span><span class="o">=</span><span class="s2">"Cookie:"</span><span class="p">))</span>
|
||
<span class="go">Cookie: rocky=road; Path=/cookie</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">attrs</span><span class="o">=</span><span class="p">[],</span> <span class="n">header</span><span class="o">=</span><span class="s2">"Cookie:"</span><span class="p">))</span>
|
||
<span class="go">Cookie: rocky=road</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">"chips=ahoy; vienna=finger"</span><span class="p">)</span> <span class="c1"># load from a string (HTTP header)</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||
<span class="go">Set-Cookie: chips=ahoy</span>
|
||
<span class="go">Set-Cookie: vienna=finger</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s1">'keebler="E=everybody; L=</span><span class="se">\\</span><span class="s1">"Loves</span><span class="se">\\</span><span class="s1">"; fudge=</span><span class="se">\\</span><span class="s1">012;";'</span><span class="p">)</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||
<span class="go">Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;"</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"oreo"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"doublestuff"</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"oreo"</span><span class="p">][</span><span class="s2">"path"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"/"</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||
<span class="go">Set-Cookie: oreo=doublestuff; Path=/</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"twix"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"none for you"</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"twix"</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||
<span class="go">'none for you'</span>
|
||
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">cookies</span><span class="o">.</span><span class="n">SimpleCookie</span><span class="p">()</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"number"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">7</span> <span class="c1"># equivalent to C["number"] = str(7)</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"string"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"seven"</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"number"</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||
<span class="go">'7'</span>
|
||
<span class="gp">>>> </span><span class="n">C</span><span class="p">[</span><span class="s2">"string"</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
|
||
<span class="go">'seven'</span>
|
||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||
<span class="go">Set-Cookie: number=7</span>
|
||
<span class="go">Set-Cookie: string=seven</span>
|
||
</code></pre></div></div></div> |