用cgi-python脚本设置co​​okie

时间:2012-12-02 10:05:56

标签: python cgi setcookie

我尝试使用set-cookie标头来响应服务器

我的cgi脚本开头如下

#!/usr/bin/env python

import json
from collections import defaultdict
import cgi
import cgitb; cgitb.enable()  # for troubleshooting
from MySQL import sql

form = cgi.FieldStorage()
mode = form.getvalue('mode')

print """Content-type: text/html\r\n"""
print """Set-Cookie: name=12345\r\n\r\n"""

但是,在我的Chrome上检查来自服务器的响应时...调试器在响应部分中没有显示任何set-cookie标头,并且set-cookie标头作为一部分打印在响应部分中文本,与内容类型标题不同...

知道我做错了吗?

谢谢你们

2 个答案:

答案 0 :(得分:3)

问题是你要在“Content-Type”标题的末尾添加两个换行而不是一个换行,这是HTTP标题和正文之间的标准分隔符。

您应该在每个标头值的末尾发出\r\n(而不是\n\n

完成发送标题后,您应该再打印一个\r\n来开始发送邮件正文。

编辑:此外,您应该使用sys.stdout.write(...)或在print语句后附加一个逗号,以避免插入隐式换行符。如,

print "Header: Value\r\n",

答案 1 :(得分:0)

您应该在Content-type:text / html行之前打印Set-Cookie行。