欢迎访问宙启技术站
智能推送

Python中如何设置cookie——详解set_cookie()函数

发布时间:2024-01-16 06:24:45

在Python中,可以使用set_cookie()函数来设置cookie。set_cookie()函数的参数可以包含cookie的名称、值以及其他可选项,例如过期时间、域和路径。

下面是set_cookie()函数的语法:

def set_cookie(self, name, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False)

下面是参数的解释:

- name:cookie的名称。

- value:cookie的值。

- max_age:cookie的过期时间,以秒为单位。如果设置为None(默认),则cookie将在浏览器关闭时过期。

- expires:cookie的过期日期时间,可以是一个字符串形式的日期时间(例如:"Wed, 21 Oct 2022 07:28:00 GMT")或一个datetime对象。如果设置了expires,则max_age将被忽略。

- path:cookie的路径,指定了哪些URL可以读取cookie。默认是'/',表示可以在整个域名下的所有URL中读取cookie。

- domain:cookie的域,用于指定哪些域名可以读取cookie。默认为None,表示只有设置该cookie的域名才能读取cookie。

- secure:指示浏览器在使用HTTPS连接时才能发送cookie。默认为False。

- httponly:指示cookie是否只能通过HTTP协议发送,不能用JavaScript等其他方法访问。默认为False。

下面是一个使用set_cookie()函数设置cookie的例子:

from http import cookies

# 创建一个cookie对象
cookie = cookies.SimpleCookie()

# 设置cookie的值
cookie['name'] = 'John'
cookie['age'] = 25

# 设置cookie的过期时间为1小时
cookie['age']['max-age'] = 3600
# 或者设置过期日期时间为一个字符串
# cookie['age']['expires'] = 'Wed, 21 Oct 2022 07:28:00 GMT'

# 设置cookie的路径
cookie['name']['path'] = '/example'

# 设置cookie的域
cookie['name']['domain'] = '.example.com'

# 设置cookie只能通过HTTPS发送
cookie['name']['secure'] = True

# 设置cookie只能通过HTTP发送,不能通过JavaScript访问
cookie['name']['httponly'] = True

# 将cookie添加到响应头中
headers = [('Set-Cookie', cookie.output(header=''))]

# 返回带有cookie的响应
response = 'Hello world!'
status = '200 OK'

# 打印响应头和响应体
for header in headers:
    print(f'{header[0]}: {header[1]}')
print()
print(response)

在上面的例子中,首先创建一个Cookie对象,然后通过设置cookie的键值对来设置具体的cookie信息。可以使用max_age参数设置cookie的过期时间,也可以使用expires参数设置cookie的过期日期时间。然后可以使用path参数设置cookie的路径,domain参数设置cookie的域,secure参数设置cookie只能通过HTTPS发送,httponly参数设置cookie只能通过HTTP发送,并且不能通过JavaScript等其他方法访问。

最后,通过将cookie添加到响应头中,将cookie发送给客户端。在示例中,headers列表保存着Set-Cookie头,通过循环打印响应头和响应体,将包含cookie的响应返回给客户端。

这就是如何在Python中使用set_cookie()函数设置cookie的方法。可以根据需要调整参数来满足具体的应用场景。