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

Python中设置cookie的常用函数——set_cookie()方法详解

发布时间:2024-01-16 06:27:41

在Python中,设置cookie是通过使用set_cookie()方法来实现的。set_cookie()方法是HTTPResponse对象的一个方法,它可以用于设置响应的cookie。在本文中,我们将详细解释set_cookie()方法的使用,并提供一些实际的例子来帮助理解。

set_cookie()方法的语法如下:

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

下面是对各个参数的解释:

- key:一个字符串,表示cookie的名字。

- value:一个字符串,表示cookie的值。

- max_age:一个整数,表示cookie的最大生命周期,以秒为单位。

- expires:一个datetime对象或一个字符串,表示cookie过期的时间。

- path:一个字符串,表示cookie的可用路径。

- domain:一个字符串,表示cookie的可用域。

- secure:一个布尔值,表示cookie是否只能通过HTTPS传输。

- httponly:一个布尔值,表示cookie是否只能通过HTTP传输,无法通过JavaScript访问。

接下来,我们将提供一些实际的例子来演示如何使用set_cookie()方法。

#### 示例1:设置一个名为"username"的cookie

from http.server import HTTPServer, BaseHTTPRequestHandler

class SimpleHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        self.send_cookie()
        self.send_message('Cookie has been set!')
    
    def send_cookie(self):
        self.send_header('Set-Cookie', 'username=john')
    
    def send_message(self, message):
        self.wfile.write(message.encode())

httpd = HTTPServer(('localhost', 8000), SimpleHandler)
httpd.serve_forever()

运行以上代码,并打开浏览器访问http://localhost:8000,将会看到一个提示消息,说明cookie已经设置成功。

#### 示例2:设置一个带有过期时间的cookie

from http.server import HTTPServer, BaseHTTPRequestHandler
import datetime

class SimpleHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        self.send_cookie()
        self.send_message('Cookie has been set!')
    
    def send_cookie(self):
        expires = datetime.datetime.now() + datetime.timedelta(days=7)
        expires = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")
        self.send_header('Set-Cookie', 'username=john; expires={}'.format(expires))
    
    def send_message(self, message):
        self.wfile.write(message.encode())

httpd = HTTPServer(('localhost', 8000), SimpleHandler)
httpd.serve_forever()

运行以上代码,并打开浏览器访问http://localhost:8000,将会看到一个提示消息,说明cookie已经设置成功,并且该cookie将在一周后过期。

#### 示例3:设置一个只能通过HTTPS传输的cookie

from http.server import HTTPServer, BaseHTTPRequestHandler

class SimpleHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        self.send_cookie()
        self.send_message('Cookie has been set!')
    
    def send_cookie(self):
        self.send_header('Set-Cookie', 'username=john; secure')
    
    def send_message(self, message):
        self.wfile.write(message.encode())

httpd = HTTPServer(('localhost', 8000), SimpleHandler)
httpd.serve_forever()

运行以上代码,并打开浏览器访问http://localhost:8000,将会看到一个提示消息,说明cookie已经设置成功,并且该cookie只能通过HTTPS传输。

以上就是关于Python中设置cookie的set_cookie()方法的详细介绍和使用例子。通过使用set_cookie()方法,我们可以轻松地设置cookie,并根据需要自定义其属性。