我正在開發一個web工具,並且在設置cookie時遇到了一些問題。我曾經在20年前在Perl中做過這件事,並且對於2017年看起來似乎沒有一種清晰而乾淨的方式來處理cookie中的cookie!我認爲會一天比一天簡單快捷。我已經嘗試過使用請求模塊手動設置cookie,以及我在堆棧溢出中找到的大量部分代碼示例。無論我看,文檔都很差,沒有完整的工作示例,或者答案很老。在Python cgi中設置瀏覽器cookie的問題
我正在用Python創建一個cgi腳本。在腳本的登錄頁面上,我有print "Content-type: text/html\r\n"
以便在網頁上顯示文本框和選擇菜單。當用戶點擊提交時,如果出現錯誤,我有一個驗證步驟,需要在頁面上打印某些內容。如果沒有錯誤,我需要腳本來加載一個新頁面並設置一個cookie。
這裏是我使用的設置我的cookies代碼:
#!C:\Python27\python.exe -u
import Cookie
c = Cookie.SimpleCookie()
c['id'] = '12345'
c['score'] = '8.76'
c['page'] = '3'
print "Content-type: text/html %s;\r\n" % (c)
print ""
print c
的問題是:
- 只有兩個上述三個C值的存儲餅乾當我檢查「在運行上述代碼後,在Firefox中顯示「Cookies」。
- 由於使用打印語句設置cookie並再次發送Content-type,因此我在腳本中登錄的頁面在頂部顯示
Content-type: text/html Set-Cookie: score=8.76 Set-Cookie: id=12345 Set-Cookie: page=3 ;
。發生這種情況時,我的瀏覽器中不存儲cookie。只有在標題中不是Content-type: text/html
時纔會存儲Cookie。
有沒有辦法從我的腳本里面設置cookies而不打印Content-type: text/html
的另一個副本到瀏覽器?
我還需要一種在用戶在工具中四處移動時可以無縫更新cookie的方式。例如,當他們點擊下一頁時,cookie會更新到下一個頁碼。
我在Windows 10上使用Python 2.7,並使用Firefox作爲我的測試瀏覽器。