当前位置: 首页 > news >正文

南京做网站费用凡科网站怎么做友情链接

南京做网站费用,凡科网站怎么做友情链接,wordpress 微信客户端,福州高端网站建设公司Cookies 详解及其与 Session 的协同工作 一、Cookies 的本质与作用 1. 什么是 Cookies? Cookies 是由服务器发送到用户浏览器并存储在本地的小型文本文件。核心特性: 存储位置:客户端浏览器数据形式:键值对字符串(最大…

Cookies 详解及其与 Session 的协同工作

一、Cookies 的本质与作用

1. 什么是 Cookies?

Cookies 是由服务器发送到用户浏览器并存储在本地的小型文本文件。核心特性:

  • 存储位置:客户端浏览器
  • 数据形式:键值对字符串(最大4KB)
  • 传输方式:通过HTTP头部自动传递
  • 生命周期:可设置过期时间(会话级/持久化)
2. 在浏览器中的作用:
保持登录状态
记录用户行为
身份识别
个性化体验
状态跟踪
偏好设置
购物车保存
跨页面数据传递
广告定向
数据分析
3. 技术实现流程:
BrowserServer首次请求(无Cookie)HTTP响应 + Set-Cookie: id=abc123存储Cookie后续请求(自动携带Cookie)读取Cookie值提供个性化响应返回定制化内容BrowserServer

二、Cookies 与 Session 的协同机制

1. 经典协作模式:
存储在
通过
客户端存储
每次请求携带
Session 数据
服务器数据库
Session ID
Cookie
浏览器
服务器
2. 具体工作流程:
UserBrowserServerSessionDB访问网站GET /login创建新SessionSessionID=xyz789Set-Cookie: sessionid=xyz789显示登录表单提交登录凭证POST /login (携带Cookie)验证凭证 → 存储user_id重定向到仪表盘GET /dashboard (携带Cookie)用xyz789获取user_iduser_id=123生成个性化数据返回用户专属仪表盘UserBrowserServerSessionDB

三、在 Django 项目中的实现代码

1. 设置 Session-Cookie(登录视图)
# views.py
def user_login(request):if request.method == 'POST':username = request.POST['username']password = request.POST['password']user = authenticate(username=username, password=password)if user:# 核心Session操作request.session['user_id'] = user.id# 显式设置Cookie参数response = redirect('dashboard')response.set_cookie('user_lang', 'zh-CN', max_age=30*24*3600,  # 30天有效期httponly=False,       # 允许JS访问secure=True           # 仅HTTPS传输)return response
2. 读取 Cookie(中间件示例)
# middleware.py
class LanguageMiddleware:def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request):# 1. 从Cookie获取语言偏好lang = request.COOKIES.get('user_lang', 'en')# 2. 设置线程本地语言translation.activate(lang)request.LANGUAGE_CODE = lang# 3. 处理请求response = self.get_response(request)# 4. 回写Cookie(如需更新)if lang != 'en':response.set_cookie('user_lang', lang)return response
3. Session-Cookie 安全配置(settings.py)
# 防止XSS攻击
SESSION_COOKIE_HTTPONLY = True  # 禁止JS访问Session Cookie# 防止中间人攻击
SESSION_COOKIE_SECURE = True    # 仅通过HTTPS传输# 防御CSRF
CSRF_USE_SESSIONS = True        # CSRF token存储在Session中
CSRF_COOKIE_HTTPONLY = False    # 允许AJAX访问CSRF token# 同源策略
SESSION_COOKIE_SAMESITE = 'Lax' # 平衡安全与第三方集成

四、Cookie 与 Session 的对比分析

特性CookieSession
存储位置客户端浏览器服务器端
数据类型仅字符串(最大4KB)任意Python对象
安全性较低(用户可见可修改)较高(服务器控制)
生命周期可长期保存(设置过期时间)通常短期(会话结束或超时)
性能影响每次请求自动携带需要服务器查询存储
典型应用场景语言偏好、主题设置、跟踪ID登录状态、购物车、敏感数据

五、实际应用案例:购物车系统

工作流程:
用户添加商品
存储商品ID到Session
用户关闭浏览器
Session Cookie过期
用户重新访问
Cookie携带SessionID
服务器恢复Session
显示完整购物车
代码实现:
# views.py
def add_to_cart(request, product_id):# 确保购物车存在if 'cart' not in request.session:request.session['cart'] = {}# 更新购物车cart = request.session['cart']cart[product_id] = cart.get(product_id, 0) + 1# 标记Session已修改request.session.modified = True# 设置跟踪Cookie(非敏感数据)response = JsonResponse({'status': 'success'})response.set_cookie('cart_updated', datetime.now().isoformat())return response

六、安全最佳实践

  1. 敏感数据绝不存Cookie

    # 错误示例(密码存Cookie)
    response.set_cookie('password', user.password) # 正确做法
    request.session['user_id'] = user.id
    
  2. Cookie签名验证

    # 设置签名Cookie
    response.set_signed_cookie('preferences', 'dark_theme', salt='ui_settings',max_age=3600
    )# 读取验证
    request.get_signed_cookie('preferences', salt='ui_settings')
    
  3. Session劫持防护

    # 每次登录更换Session ID
    def login_view(request):# ...验证逻辑...request.session.cycle_key()  # 关键防护!
    
  4. 浏览器指纹绑定

    # 存储用户特征哈希
    fingerprint = hashlib.sha256(f"{request.META['HTTP_USER_AGENT']}{ip_address}".encode()
    ).hexdigest()
    request.session['browser_fp'] = fingerprint# 每次请求验证
    if request.session.get('browser_fp') != current_fingerprint:request.session.flush()  # 强制重新登录
    

总结回答

Cookies是浏览器存储的小型文本数据,核心作用是:

  1. 在客户端保存非敏感状态信息(如语言/主题偏好)
  2. 作为Session ID的载体实现身份保持
  3. 跟踪用户行为(需符合隐私法规)

与Session的协同方式

  • Session在服务器端存储核心状态(如用户ID、权限)
  • Cookies在浏览器端安全存储Session ID(通常为HttpOnly+Secure)
  • 每次请求自动携带Session ID Cookie → 服务器恢复完整Session

这种设计实现了安全与用户体验的平衡:敏感数据受服务器保护,非敏感设置由客户端高效存储,共同构建了有状态的Web体验。

http://www.dtcms.com/a/494116.html

相关文章:

  • 腾讯cdn加速优化wordpress保定百度关键词优化
  • 电子商务网站设计实验报告长春市建设工程信息网官网
  • 营销软文网站电子商务网站开发技术和工具有哪些
  • 电影网站制作模版廊坊企业自助建站
  • 网站开发建设费用node框架做网站
  • 网站建设手机端是什么意思做汽车商城网站
  • 计算机系毕设代做网站吴江区建设局网站
  • 罗庄建设局网站重庆市建设工程信息网查证件
  • 北京网站设计工作室北京火车站建站时间
  • 检察门户网站 建设意义国内贸易平台
  • 在线免费域名网站解析免费行情网站大全
  • 审计网站建设毕业设计年终总结汇报ppt模板
  • 想接做网站的单子企业网站建设公司电话西安
  • 中山专业外贸网站建设中国建筑集团有限公司官网校园招聘
  • 红色 网站深圳网站建设antnw
  • 龙华学校网站建设对网站建设提建议
  • 电子商务网站运营方案平面设计logo创意图片
  • 上海装修公司十大排名桂平seo关键词优化
  • 福州做网站多少钱建筑工程公司名字
  • 国内高清视频素材网站注册网站需要多久
  • 温州建网站哪家强涉及部署未备案网站
  • 网站建设需要云主机吗wordpress 4.2.2
  • 网站备案证书如何打开如何免费申请域名和网址
  • 网站网速慢程序员培训学校
  • 专业建设网站公司哪家好设计官网论坛
  • 个人网站也要备案吗高端网站建设1
  • 阿里云建网站教程那些做黑网站的都是团体还是个人
  • wordpress做定制T恤的网站自己做的手机网站怎么加入小程序
  • 快速网站建设公司ktv网站建设方案
  • 怎样做自己的的社交网站定制建站