2012-12-02 137 views
0

我试图从一个set-cookie头设置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""" 

然而,检查从响应当服务器响应服务器上。调试器不会在响应部分显示任何set-cookie标头,并且set-cookie标头将作为文本的一部分显示在响应部分中,而不像内容类型的标头...

任何想法我做错了什么?

谢谢你们

回答

3

的问题是要附加两个新行,而不是一个你的“内容类型”头,这是HTTP标头和身体之间的标准分隔的结束。

而应该在每头值的年底发射\r\n(而不是\n\n

当您完成发射头,您应打印一个额外的\r\n开始你的邮件正文。

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

print "Header: Value\r\n",

+0

嘿..请检查我的版本..我知道如果这就是你的意思 –

+0

它仍然无法正常工作..我得到了相同的结果打印在客户端:-( –

+0

哦!另外,附加一个“ ,“到你的打印语句的结尾,打印会自动附加”\ n“到每一行,所以如下: 'print”“”Header:value \ r \ n“”“,' – fmoo

0

您应该将内容类型之前打印的Set-Cookie行:text/html的线。