1-您的代码没有意义。cookie1 和 cookie2 没有在第一个函数中定义。
2- 看起来您正在尝试使用旧的 cgi 库打印内容,您在其中执行标题、空白行,然后是页面内容。Cookie 也由 Web 服务器作为 HTTP 标头发送,并由浏览器作为 HTTP 标头发送回。它们不会出现在网页上。所以你需要在空行之前有“set-cookie”数据。
除非您必须使用 CGI 模块,否则我会研究其他解决方案。CGI 基本上已经死了——它是一个旧的、限制性的、标准的;配置服务器可能很麻烦;表现从来都不是很好;还有更好的选择。
大多数(如果不是全部)使用 Python 进行的现代 Web 开发都使用 WSGI 协议。(Python Web 框架、WSGI 和 CGI 如何组合在一起,http: //www.python.org/dev/peps/pep-0333/ )
Flask 和 Bottle 是两个非常简单的 WSGI 框架。(Pryamid 和 Django 是两个更高级的)。除了大量非常重要的功能之外,它们还允许您在框架将有效负载传递到服务器之前轻松指定 HTML 响应和随之而来的 HTTP 标头(包括 cookie)。这
http://flask.pocoo.org/docs/quickstart/
http://bottlepy.org/docs/dev/tutorial.html
如果我不得不使用 cgi,我可能会做这样的事情:(伪代码)
def setup_cookie():
# try/except to read the cookie
return cookie
def headers(cookie):
# print a set-cookie header if needed
return "SetCookie: etc"
def page_content(cookie):
# maybe you want to alter the page content with a regex or something based on the cookie value
return html
cookie = setup_cookie()
print headers( cookie )
print ""
print page_content( cookie )
但请记住 - 使用旧的 cgi 标准,打印标题而不是 html - 这意味着如果您的内容生成影响标题值(如 cookie),您需要能够在“打印”之前覆盖它。