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

Python中设置cookie的方法——set_cookie()

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

在Python中设置cookie可以使用set_cookie()方法来实现。set_cookie()方法用于向浏览器发送cookie,该cookie会被保存在浏览器中,并在每次发送请求时被自动发送到服务器。

使用set_cookie()方法时,需要传递至少一个参数,即cookie的名称和值。下面是set_cookie()方法的语法:

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

下面是各个参数的说明:

- name:cookie的名称,字符串类型。

- value:cookie的值,默认为空字符串。

- max_age:cookie的过期时间,整数类型。单位为秒,默认为None,表示cookie在浏览器关闭后过期。

- expires:cookie的过期时间,为一个datetime.datetime类型的对象。默认为None,表示cookie在浏览器关闭后过期。

- path:cookie有效的路径,字符串类型。默认为'/',表示在整个网站范围内都有效。

- domain:cookie有效的域名,字符串类型。默认为None,表示在当前域名有效。

- secure:是否只通过HTTPS发送cookie,布尔类型。默认为None,表示根据请求的协议自动选择是否使用HTTPS。

- httponly:是否设置为HTTP-only,即只能通过HTTP协议来访问cookie,布尔类型。默认为False,表示可以通过JavaScript访问cookie。

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

from http.server import BaseHTTPRequestHandler

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        # 设置cookie
        self.send_cookie('name', 'John Doe')
        
        self.wfile.write(b'Hello, world!')
        
    def send_cookie(self, name, value):
        self.send_header('Set-Cookie', f'{name}={value}; Path=/; HttpOnly')
        
if __name__ == '__main__':
    from http.server import HTTPServer
    
    server = HTTPServer(('localhost', 8000), MyHandler)
    server.serve_forever()

在上面的例子中,首先创建了一个自定义的MyHandler类,继承自BaseHTTPRequestHandler类。在do_GET方法中,首先发送了一个HTTP响应的状态码和头部信息。然后通过调用self.send_cookie()方法设置了一个名为name、值为John Doe的cookie。最后使用self.wfile.write()方法发送了一个HTML字符串。

send_cookie()方法中,通过调用self.send_header()方法设置了一个名为Set-Cookie的头部信息,并将cookie的名称、值以及其他相关属性拼接成一个字符串。

运行上述代码后,启动一个HTTP服务器,当浏览器发送请求到该服务器时,服务器会在响应头部中设置一个名为Set-Cookie的头部信息,浏览器会在接收到该响应后将cookie保存在本地。在之后的每次请求中,浏览器会自动发送该cookie到服务器。

使用set_cookie()方法可以灵活地设置cookie的各种属性,根据实际需求来进行设置。