聽起來很簡單WSGI餅乾 - 沒有中間件
def create_cookie():
bag = string.ascii_uppercase + string.ascii_lowercase + string.digits
cookie = Cookie.SimpleCookie()
cookie['sessionid'] = ''.join(random.sample(bag,24))
cookie['sessionid']['expires'] = 600
return 'Set-Cookie: ', cookie.output().replace('Set-Cookie: ', '', 1)
cookie.output()被設置Cookie:會話ID = YmsrvCMFapXk6wAt4EVKz2uU;到期=孫,08月14日2011年21點48分19秒GMT
headers.append(('Content-type', 'text/html'))
headers.append(('Content-Length', str(output_len)))
headers.append(create_cookie)
這是我的迴應 ( '200 OK',[( '內容類型', 'text/html的'),(」 ('Set-Cookie','sessionid = YmsrvCMFapXk6wAt4EVKz2uU; expires = Sun,14-Aug-2011 21:48:19 GMT')],'html stuff')
這是我從envirion得到: HTTP_COOKIE:會話ID = YmsrvCMFapXk6wAt4EVKz2uU
,當我點擊我的網頁上其他鏈接,沒有更多的HTTP_COOKIE 使用Chrome開發者控制檯中,我可以看到請求cookie中nd網頁標題包含: Cookie :: sessionid = YmsrvCMFapXk6wAt4EVKz2uU
現在,這讓我困擾了一下。首先爲什麼它有雙重::?我嘗試在create_cookie函數中使用「Set-Cookie」而不是「Set-Cookie:」。這樣做,我從環境中根本沒有得到任何HTTP_COOKIE。
所以在網絡搜索之後,每個人都只是談論中間件(不要建議我用一個 - 我正在這樣做來學習wsgi)......我已經空了。
還沒有基本上 我送:?(「設置Cookie」,「會話ID = YmsrvCMFapXk6wAt4EVKz2uU;到期=孫,08月14日-2011 21:48:19 GMT') 但是得到這個標頭: HTTP_COOKIE::sessionid = hM2YOE5dSsVpa3QIRCLNjfwX 爲什麼額外':'? – Bjorn
哦,我將'expires'更改爲'max-age'10 * 60 * 1000:S - 儘管如此,仍然沒有運氣。 – Bjorn
好的,似乎正確的方法是使用'Set-Cookie'。不是'Set-Cookie' - 現在我得到:HTTP_COOKIE:session = FZ25UL60bQP7yu93cEawtqro – Bjorn