2011-08-14 10 views
1

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は、()のSet-Cookieれる:セッションID = YmsrvCMFapXk6wAt4EVKz2uU。 「( 'OK 200'、[( 'コンテンツタイプ'、 'text/htmlの')、(=日、14 - 8月 - 2011年21時48分19秒GMT

headers.append(('Content-type', 'text/html')) 
    headers.append(('Content-Length', str(output_len))) 
    headers.append(create_cookie) 

は、これは私の応答 で期限切れになります( 'Set-Cookie'、 'sessionid = YmsrvCMFapXk6wAt4EVKz2uU;期限= 2011年8月14日21:48:19 GMT')]、 'html stuff')

HTTP_COOKIE:これは私がenvirionから得るものであるセッションID = YmsrvCMFapXk6wAt4EVKz2uU

そして、私は自分のページ上の別のリンク、クロムDEVコンソールを使用していない多くのHTTP_COOKIE をクリックしたときに、私は、要求のクッキーaを見ることができますページヘッダーには次の情報が含まれています。 Cookie :: sessionid = YmsrvCMFapXk6wAt4EVKz2uU

これで少し気になります。まず第一に、なぜそれがダブル::を持っていますか?私はcreate_cookie関数で 'Set-Cookie:'の代わりに 'Set-Cookie'を使ってみました。私はenvironからHTTP_COOKIEをまったく取得しませんでした。

だからウェブで検索し、誰もがちょうどミドルウェアの話をたくさんした後に(してください私は1つ使用することをお勧めしません - 私はWSGIを学ぶためにこれをやっている)...私は空作ってみました。私は、次の要求が決定的に実際に私が見つけることができるのクッキーを送信するブラウザ側の問題をそれを作るHTTP_COOKIEが含まれていなかったことに気づいたいくつかの集中的なデバッグ後

+0

何もまだ

"イェーイ" 基本的に私が送信している:。?( 'のSet-Cookie'、「セッションID = YmsrvCMFapXk6wAt4EVKz2uU; =日、14 - 8月に期限が切れます-2011 21:48:19 GMT ') ただし、このヘッダーを取得する: HTTP_COOKIE :: sessionid = hM2YOE5dSsVpa3QIRCLNjfwX 余分な ':'? – Bjorn

+0

ああ、私は 'max-age'に 'expires'を変更しました10 * 60 * 1000:S - まだ運がありません。 – Bjorn

+0

OK、これを行う正しい方法は、単に 'Set-Cookie'を使うことです。 HTTP_COOKIE:session = FZ25UL60bQP7yu93cEawtqro – Bjorn

答えて

2

FTW目に見えないデフォルトの動作...

そうでなければブラウザ。

デフォルトのパスとドメインの動作が私の努力を払拭していることがわかりました。/ action/login(cookieが設定されていた場所)と/ display/data(cookieが送信されていない場所) '/'、この場合にパスを設定