首页 > 其他分享 >Cookie

Cookie

时间:2024-09-12 16:38:24浏览次数:1  
标签:__ obj self request cookie Cookie environ

Cookie

本质上:保存在用户浏览器上键值对。

image-20230716154707393

1 使用

from django.urls import path
from django.shortcuts import HttpResponse


def x1(request):
    # 包含:响应体、响应头、状态码等信息
    obj = HttpResponse("x1", status=201, reason="OK")
    # 设置响应头
    obj['name'] = "wupeiqi"

    # 设置cookie
    # import datetime
    # ctime = datetime.datetime.now() + datetime.timedelta(seconds=10)
    
    obj.set_cookie("v3", "root", max_age=10, path="/")
    obj.set_cookie("v2", "hello")
    obj.set_signed_cookie("info", "xiaoguang")  # 签名
    return obj


def x2(request):
    print(request.COOKIES)
    xx = request.get_signed_cookie("info")  # 用户不能自己修改cookie的内容
    print(xx)
    # print(request.COOKIES.get('v1'))
    # print(request.COOKIES.get('v2'))
    return HttpResponse("x2")


urlpatterns = [
    path('x1/', x1, name='x1'),
    path('x2/', x2, name='x2'),
]

2 源码

  • HttpResponse,包裹

    # 包含:响应体、响应头、状态码等信息
    obj = HttpResponse("x1", status=201, reason="OK")
    
    # 设置响应头
    obj['name'] = "wupeiqi"
    
    # 设置cookie
    # import datetime
    # ctime = datetime.datetime.now() + datetime.timedelta(seconds=10)
    
    obj.set_cookie("v3", "root", max_age=10, path="/")
    obj.set_cookie("v2", "hello")
    
    obj.set_signed_cookie("info", "xiaoguang")  # 签名
    return obj
    
  • WSGIRequest

    class WSGIHandler(base.BaseHandler):
        request_class = WSGIRequest
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.load_middleware()
    
        def __call__(self, environ, start_response):
            set_script_prefix(get_script_name(environ))
            signals.request_started.send(sender=self.__class__, environ=environ)
    
            request = self.request_class(environ)
    
    class HttpRequest:
        def get_signed_cookie(self, key, default=RAISE_ERROR, salt="", max_age=None):
            cookie_value = self.COOKIES[key]
            value = signing.get_cookie_signer(salt=key + salt).unsign(cookie_value, max_age=max_age)
    		return value
    
    class WSGIRequest(HttpRequest):
        def __init__(self, environ):
            self.environ = environ
            ...
            
        @cached_property
        def COOKIES(self):
            raw_cookie = get_str_from_wsgi(self.environ, "HTTP_COOKIE", "")
            return parse_cookie(raw_cookie)
    

标签:__,obj,self,request,cookie,Cookie,environ
From: https://www.cnblogs.com/sherwin1995/p/18410529

相关文章

  • cookie和seesion区别
    Cookie和Session是两种用于在客户端和服务器之间存储用户信息的机制,它们在存储方式、生命周期、安全性等方面存在显著差异。以下是它们的主要区别:1.存储位置Cookie:存储在用户的浏览器中。每次向服务器发送请求时,浏览器会自动附带相应的Cookie。Session:存储在......
  • 第三方Cookie的终结:如何通过三步法转向零方数据和第一方数据策略
    有两类创作者。一类是焦急地搜索所有关于第三方Cookie失效的信息。另一类则是不太清楚什么是第三方Cookie及其重要性。无论你属于哪一类,有一点是确定的:你不能忽视第三方Cookie的终结,最终你的营销策略需要进行调整(这并不是坏事)。但我们谈论的调整有多大?你还有多少时间来准备......
  • 【整理】【java开发】JavaWeb之JSP、Cookie、Session(一)
    一、JSP介绍及原理1.1JSP简介1.2JSP简单入门1.3JSP原理介绍二、JSP脚本2.1JSP脚本形式2.2JSPEL表达式2.3JSPJSTL标签三、会话跟踪技术3.1Cookie3.2Session原创0xNvyao安全随笔声明请勿利用本公众号文章内的相关......
  • Flask session cookie 失效在Safari中的解决方法
    Flask会默认使用客户端会话管理,数据存储在浏览器的cookie中。这种方法通常在各种浏览器中工作良好,但有时可能会在Safari中遇到sessioncookie失效的问题,特别是使用了iOS或macOS上的Safari。这个问题常见的原因是Safari中的隐私设置,尤其是涉及到“防止跨站追踪”和第......
  • Tomcat Request Cookie 丢失问题
    优质博文:IT-BLOG-CN一、问题描述生产环境偶尔(涉及到多线程处理)出现"前端传递`Cookie为空"的告警,导致前端请求丢失,出现请求失败问题。告警内容如下前端传递Cookie为空告警内容:服务端获取requestCookie为空,请尽快处理!!!AppId:xxxxxxip:xx.xx.xxx.xx告警事件:2024-03-15......
  • AT_dwacon6th_prelims_c Cookie Distribution 题解
    组合意义保平安。思路发现\(\prod\)的贡献不好统计。我们可以考虑\(\prod\)的组合意义。容易发现:\[\prodc_i=\prod\sum_{j=1}^{c_i}1\]那么依照分配律,我们发现这个东西的组合意义是每个人从获得的饼干中选一个出来的方案。这样就会变好统计很多。设\(dp_{i,j}\)为......
  • 浅谈会话技术:Cookie和Session
    1前言1.1内容提要理解使用会话技术的原因理解客户端技术和服务器技术之间的区别掌握Cookie的设置(构造),熟悉Cookie的获取,能够通过浏览器查看Cookie信息理解Session维护的机制,能够分析Session的失效原因熟悉使用Session存储和获取信息掌握Cookie和Session的使用场景1.2前......
  • cookie和session的区别
        什么是cookie?        cookie字面翻译就是饼干的意思;但是在web中可不是饼干的意思,通常一点理解就相当是登录视频网站啊,csdn网站的账户和密码,客户端发送账号密码还有GET请求的资源给服务端,服务端通过后台的数据库进行比对,发现密码账号对的上之后将......
  • AngularJS进阶(十五)Cookie ‘data‘ possibly not set or overflowed because it was
    Cookie ‘data’ possibly not set or overflowedbecause it was too large (5287 > 4096 bytes)!注:请点击此处进行充电!故事起源项目开发过程中遇到以上问题,刚开始以为只是个警告,没太在意。后来发现直接影响到了程序的执行效果。果断寻找解决方法。问题......
  • Nginx基于cookies控制流量的灰度发布
    前言:    因为公司业务发版需要进行灰度发布,基于一定的权重来指向用户流量到不同的版本应用中,这里用nginx的两种不同的方法来实现。参考:        nginx会话保持之sticky模块-天生帅才-博客园(cnblogs.com)方法一:利用Nginx-sticky我将在这里介绍容器化......