Как удалить / удалить куки в web.py - PullRequest
4 голосов
/ 31 марта 2011

В web.py вы можете получить доступ к файлам cookie запроса с помощью web.webapi.cookies(), а с помощью web.webapi.setcookie(...) вы можете установить значение файла cookie.Однако в документации неясно, как один удаляет cookie, - вы просто setcookie со значением None?

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

Вы правы, это, конечно, не очевидно из строки документов setcookie() или из онлайн-документов, но это где-то :

Третий (и необязательный) аргумент web.setcookie(), «expires», позволяет вам установить, когда вы хотите, чтобы срок действия ваших cookie истек. Любое отрицательное число немедленно истекает cookie.

Например, вот часть того, что мы делаем в нашем коде выхода (удалите cookie сеанса пользователя):

    web.setcookie('session', '', expires=-1, domain=session_cookie_domain)

Обратите внимание, что вы должны удалить cookie с тем же доменом и тем же флагом безопасности, что и для него, иначе он не будет удален. Кроме того, с web.py вы обычно используете web.setcookie() в качестве ярлыка для web.webapi.setcookie().

0 голосов
/ 06 апреля 2014

web.py, похоже, не может удалить cookie. Если вы просматриваете документацию в поваренной книге , она редкая и даже не говорит о таких вещах, как путь (поэтому вы можете установить cookie в определенном месте в домене). Поэтому мы должны обратиться к исходному коду . В этом, как я ни стараюсь, я не могу найти ссылки на метод удаления, удаления или отзыва файлов cookie.

Сказав, что после тестирования можно безопасно использовать None для истечения срока действия cookie. Вот быстрое веб-приложение, которое отобразит его.

import web

web.config.debug = False
urls = (
        '/', 'index'
        )

class index:
    def GET(self):
        c = web.cookies().get('test1')
        if c:
            if c=="test":
                print 'this is ' + c
                web.setcookie('test1', 'test2', domain = 'example.com')
            else:
                print c
                web.setcookie('test1', 'test', domain = 'example.com' expires = None)
            return c
        else:
            print "didnt find cookie"       
            web.setcookie('test1', 'test', domain = 'example.com' expires='')
            return 'I set fire to the rain'

app = web.application(urls, globals())

if __name__ == "__main__":
    app.run()

В этом веб-приложении сначала проверяется, существует ли cookie. Если это не так, он устанавливает cookie «test1» со значением «test». При следующем обновлении значение изменится на «test2». При следующем обновлении он снова устанавливает значение «test», но также истекает срок действия cookie. Это должно привести к следующему обновлению, показывающему «Я поджег дождь».

...