Cookies

Cookies 是用户浏览器内部的一些数据。Sanic 可以读取和写入存储为键值对的 cookie 。

读 cookies

一个用户的 cookies 可以通过 Request 对象的 cookies 字典访问。

from sanic.response import text

@app.route("/cookie")
async def test(request):
    test_cookie = request.cookies.get('test')
    return text("Test cookie set to: {}".format(test_cookie))

写 cookies

当返回一个响应,cookies 可以在 Response 对象上设置。

from sanic.response import text

@app.route("/cookie")
async def test(request):
    response = text("There's a cookie up in this response")
    response.cookies['test'] = 'It worked!'
    response.cookies['test']['domain'] = '.gotta-go-fast.com'
    response.cookies['test']['httponly'] = True
    return response

删除 cookies

Cookies 可以语义地或明确地删除。

from sanic.response import text

@app.route("/cookie")
async def test(request):
    response = text("Time to eat some cookies muahaha")

    # This cookie will be set to expire in 0 seconds
    del response.cookies['kill_me']

    # This cookie will self destruct in 5 seconds
    response.cookies['short_life'] = 'Glad to be here'
    response.cookies['short_life']['max-age'] = 5
    del response.cookies['favorite_color']

    # This cookie will remain unchanged
    response.cookies['favorite_color'] = 'blue'
    response.cookies['favorite_color'] = 'pink'
    del response.cookies['favorite_color']

    return response

响应 cookies 可被设置成字典值并且有一下有效参数:

  • expires (datetime): cookies 在客户端的浏览器上的过期时间。
  • path (string): cookie 使用的子 URL。默认为 /.
  • comment (string): 注释 (元数据).
  • domain (string): cookie 有效的指定域名。一个明确的指定域名必须总是有 . 开始。
  • max-age (number): cookie 可以存活的最大秒数。
  • secure (boolean): 指定 cookie 是否只能通过 HTTPS 发送。
  • httponly (boolean): 指定 cookie 是否不能被 Javascript 读取。