gpt4 book ai didi

python - 在 Python 中将反斜杠添加到我的 cookie 中

转载 作者:太空狗 更新时间:2023-10-29 21:33:08 24 4
gpt4 key购买 nike

我在使用 Python 的 SimpleCookie 时遇到了这个问题,我不确定是我的语法问题还是什么。此外,这是我的 Python 类(class)的类作业,因此它旨在教授 Python,因此这与我在现实世界中这样做的方式相去甚远。

无论如何,基本上我将信息输入到 cookie 中的表单中。我正在尝试使用输入的新信息附加到之前的 cookie。但是出于某种原因,在第三次输入数据时,cookie 突然在其中包含“\”。我不确定他们来自哪里。

这是我得到的输出类型:

"\"\\"\\\\"test:more\\\\":rttre\\":more\":and more"

#!/usr/local/bin/python

import cgi,os,time,Cookie
#error checking
import cgitb
cgitb.enable()

if 'HTTP_COOKIE' in os.environ:
cookies = os.environ['HTTP_COOKIE']
cookies = cookies.split('; ')
for myCookie in cookies:
myCookie = myCookie.split('=')
name = myCookie[0]
value = myCookie[1]
if name == 'critter' :
hideMe = value

#import critterClass

#get info from form
form = cgi.FieldStorage()
critterName = form.getvalue('input')
input2 = form.getvalue('input2')
hiddenCookie = form.getvalue('hiddenCookie')
hiddenVar = form.getvalue('hiddenVar')

#make cookie
cookie = Cookie.SimpleCookie()

#set critter Cookie
if critterName is not None:
cookie['critter'] = critterName
#If already named
else:
#if action asked, append cookie
if input2 is not None:
cookie['critter'] = hideMe+":"+input2
else:
cookie['critter'] = "default"

print cookie


print "Content-type: text/html\n\n"



if ((critterName is None) and (input2 is None)):
print """
<form name="critter" id="critter" method="post" action="critter.py">
<label for="name">Name your pet: <input type="text" name="input" id="input" /></label>
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
"""
else:
formTwo ="""
<form name="critter2" id="critter2" method="post" action="critter.py">
<label for="name">%s wants to: <input type="text" name="input2" id="input2" /></label>
<input type="hidden" name="hiddenVar" id="hiddenVar" value="%s" />
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
[name,play,feed,mood,levels,end]
"""
print formTwo % (critterName,critterName)

if 'HTTP_COOKIE' in os.environ:
cookies = os.environ['HTTP_COOKIE']
cookies = cookies.split('; ')
for myCookie in cookies:
myCookie = myCookie.split('=')
name = myCookie[0]
value = myCookie[1]
if name == 'critter' :
print "name"+name
print "value"+value

最佳答案

正如其他人所解释的,反斜杠转义了您插入到 cookie 值中的双引号字符。这里的(隐藏)机制是 SimpleCookie类(class)。 BaseCookie.output()方法返回适合作为 HTTP header 发送的字符串表示形式。它将在双引号字符之前和反斜杠字符之前插入转义字符(反斜杠)。

print cookie

语句激活 BaseCookie.output()

在您的字符串通过 cookie 的 output() 方法的每一次旅行中,反斜杠都会成倍增加(从第一对引号开始)。

>>> c1=Cookie.SimpleCookie()
>>> c1['name']='A:0'
>>> print c1
Set-Cookie: name="A:0"
>>> c1['name']=r'"A:0"'
>>> print c1
Set-Cookie: name="\"A:0\""
>>> c1['name']=r'"\"A:0\""'
>>> print c1
Set-Cookie: name="\"\\\"A:0\\\"\""
>>>

关于python - 在 Python 中将反斜杠添加到我的 cookie 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com