Файлы cookie 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: sessionid=YmsrvCMFapXk6wAt4EVKz2uU; expires=Вс, 14 августа 2011 г., 21:48:19 по Гринвичу

    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 = Вс, 14 августа 2011 г., 21:48:19 GMT')], 'html материал')

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

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

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

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


person Bjorn    schedule 14.08.2011    source источник
comment
Пока ничего? В основном я отправляю: ('Set-Cookie', 'sessionid=YmsrvCMFapXk6wAt4EVKz2uU; expires=Sun, 14 августа 2011 г. 21:48:19 по Гринвичу') Но получаю этот заголовок: HTTP_COOKIE: : sessionid=hM2YOE5dSsVpa3QIRCLNjfwX Почему дополнительные ' :' ?   -  person Bjorn    schedule 16.08.2011
comment
о, и я изменил «expires» на «max-age» 10 * 60 * 1000: S - все равно не повезло.   -  person Bjorn    schedule 16.08.2011
comment
хорошо, кажется, что правильный способ сделать это - просто использовать «Set-Cookie». Не «Set-Cookie:» — теперь я получаю: HTTP_COOKIE: session=FZ25UL60bQP7yu93cEawtqro   -  person Bjorn    schedule 16.08.2011
comment
Теперь поправьте меня, если я ошибаюсь, но как только я отправил файл cookie в браузер, он всегда должен отправлять этот конкретный файл cookie на сервер при выполнении запроса (если домен, путь и все такое совпадает) в форме: HTTP_COOKIE: cookie_name=что-то; other_params=что угодно; ... Я не указываю никакого пути или домена, и я получаю HTTP_COOKIE сразу после того, как создал и отправил его, но следующий запрос на тот же сайт ... нет HTTP_COOKIE. Я даже прочитал HTTP_COOKIE и добавил в заголовки новый «Set-Cookie», но ничего. Я сейчас совсем запутался :С   -  person Bjorn    schedule 16.08.2011


Ответы (1)


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

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

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

"ура"

person Bjorn    schedule 16.08.2011