0

我正在尝试使用 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 标头作为文本的一部分打印在响应部分中,与内容类型标题...

知道我做错了什么吗?

多谢你们

4

2 回答 2

3

问题是您将两个换行符而不是一个附加到“Content-Type”标头的末尾,这是 HTTP 标头和正文之间的标准分隔符。

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

当您完成发送标头后,您应该额外打印一个\r\n以开始您的消息正文。

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

print "Header: Value\r\n",

于 2012-12-02T10:17:54.960 回答
0

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

于 2017-09-21T14:09:00.857 回答