我正在开发一个web工具,并且在设置cookie时遇到了一些问题。我曾经在20年前在Perl中做过这件事,并且对于2017年看起来似乎没有一种清晰而干净的方式来处理cookie中的cookie!我认为会一天比一天简单快捷。我已经尝试过使用请求模块手动设置cookie,以及我在堆栈溢出中找到的大量部分代码示例。无论我看,文档都很差,没有完整的工作示例,或者答案很老。在Python cgi中设置浏览器cookie的问题
我正在用Python创建一个cgi脚本。在脚本的登录页面上,我有print "Content-type: text/html\r\n"
以便在网页上显示文本框和选择菜单。当用户点击提交时,如果出现错误,我有一个验证步骤,需要在页面上打印某些内容。如果没有错误,我需要脚本来加载一个新页面并设置一个cookie。
这里是我使用的设置我的cookies代码:
#!C:\Python27\python.exe -u
import Cookie
c = Cookie.SimpleCookie()
c['id'] = '12345'
c['score'] = '8.76'
c['page'] = '3'
print "Content-type: text/html %s;\r\n" % (c)
print ""
print c
的问题是:
- 只有两个上述三个C值的存储饼干当我检查“在运行上述代码后,在Firefox中显示“Cookies”。
- 由于使用打印语句设置cookie并再次发送Content-type,因此我在脚本中登录的页面在顶部显示
Content-type: text/html Set-Cookie: score=8.76 Set-Cookie: id=12345 Set-Cookie: page=3 ;
。发生这种情况时,我的浏览器中不存储cookie。只有在标题中不是Content-type: text/html
时才会存储Cookie。
有没有办法从我的脚本里面设置cookies而不打印Content-type: text/html
的另一个副本到浏览器?
我还需要一种在用户在工具中四处移动时可以无缝更新cookie的方式。例如,当他们点击下一页时,cookie会更新到下一个页码。
我在Windows 10上使用Python 2.7,并使用Firefox作为我的测试浏览器。