Python中设置cookie的常用函数——set_cookie()方法详解
在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,并根据需要自定义其属性。
