Cookie


HTTP被设计为”无状态”, 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来自同一人的连续请求。我们会从较低的层次(cookies)开始,然后过渡到用高层的工具来搞定会话,用户和注册的问题。


Cookies

cookies 是浏览器为 Web 服务器存储的一小段信息。 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies
原理

GET / HTTP/1.1
Host: google.com
HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671;
            expires=Sun, 17-Jan-2038 19:14:07 GMT;
            path=/; domain=.google.com
Server: GWS/2.1
GET / HTTP/1.1
Host: google.com
Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671

存取cookie

取cookie,每一个HttpRequest 对象都有一个COOKIES 对象,该对象的行为类似一个字典,你可以使用它读取任何浏览器发送给视图(view)的cookies

def show_color(request):
    if "favorite_color" in request.COOKIES:
        return HttpResponse("Your favorite color is %s" %             request.COOKIES["favorite_color"])
    else:
        return HttpResponse("You don't have a favorite color.")

写cookies,你需要使用 HttpResponse对象的 set_cookie()方法。 这里基于 GET 参数来设置 favorite_color

def set_color(request):
    if "favorite_color" in request.GET:

        # Create an HttpResponse object...
        response = HttpResponse("Your favorite color is now %s" %             request.GET["favorite_color"])

        # ... and set a cookie on the response
        response.set_cookie("favorite_color",
                            request.GET["favorite_color"])

        return response

    else:
        return HttpResponse("You didn't give a favorite color.")

你可以给 response.set_cookie() 传递一些可选的参数来控制cookie的行为

参数 缺省值 描述
max_age none cookie需要延续的时间(以秒为单位)
expires none cookie失效的实际日期/时间
path / cookie生效的路径前缀
domain none 这个cookie有效的站点
False false 如果设置为 True,浏览器将通过HTTPS

你可能感兴趣的:(Cookie)