2012-12-02 116 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的線。