wsgi cookies - нет промежуточного ПО - PullRequest
1 голос
/ 15 августа 2011

Звучит достаточно просто

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: sessionid = YmsrvCMFapXk6wAt4EVKz2uU;expires = вс, 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', [('Content-type', 'text / html'), ('Content-Length', '1204'), ('Set-Cookie', 'sessionid = YmsrvCMFapXk6wAt4EVKz2uU; expires = Sun, 14 августа 2011 21:48:19 GMT')], 'html stuff')

Это то, что я получаю от envirion: HTTP_COOKIE: sessionid = YmsrvCMFapXk6wAt4EVKz2uU

И когда я нажимаю другую ссылку на моей странице, больше нет HTTP_COOKIE. С помощью консоли разработчика Chrome я вижу файл cookie запроса и заголовок страницы.содержит: Cookie :: sessionid = YmsrvCMFapXk6wAt4EVKz2uU

Теперь это немного беспокоит меня.Прежде всего, почему он имеет двойной ::?Я попытался использовать «Set-Cookie» вместо «Set-Cookie:» в функции create_cookie.При этом я вообще не получал HTTP_COOKIE из среды.

Так что после долгих поисков в Интернете, когда все просто говорили о промежуточном программном обеспечении (не предлагайте мне использовать один, пожалуйста - я делаю это, чтобы узнатья пришла пустой.

1 Ответ

2 голосов
/ 17 августа 2011

Невидимое поведение по умолчанию ftw ...

После некоторой интенсивной отладки я заметил, что следующий запрос не включает HTTP_COOKIE, что делает его проблемой со стороны браузеров при фактической отправке cookie, который я могу найтив браузере иначе.

Некоторые копания выявили, что путь по умолчанию и поведение домена мешали моим усилиям, разница между / action / login (где был установлен cookie) и / display / data (где cookie)не было отправлено было исправлено путем установки пути в этом случае '/'.

"yay"

...