• cookies请求无法保存的问题


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 画原晓雨 2024-06-14 10:07 采纳率: 50% 浏览 9 首页/ Python / cookies请求无法保存的问题 flask前端 最近在学web,发现一个cookies请求无法保存的问题。A 'set-cookie' header doesn't have the 'secure' directive.这个错误也没找到解决方法 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 阿里嘎多学长 2024-06-14 10:10
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      从您提供的截图和描述来看,您在使用 Flask 框架开发 Web 应用时遇到了一个关于 cookies 的问题。警告信息 "A 'set-cookie' header doesn't have the 'secure' directive." 指出您的 cookies 缺少 Secure 属性。这个属性指示浏览器仅通过安全的连接(HTTPS)发送 cookies,从而提高安全性。

      解决方法

      1. 添加 Secure 属性: 在 Flask 中设置 cookie 时,您可以使用 set_cookie 方法,并添加 secure 参数。例如:

        from flask import make_response
        
        @app.route('/login', methods=['POST'])
        def login():
            # ... 省略其他代码 ...
            response = make_response(jsonify({'success': True, 'username': result[0]}))
            response.set_cookie('username', result[0], secure=True, httponly=True)
            return response
        

        注意:设置 secure=True 时,确保您的网站是通过 HTTPS 运行的,否则 cookie 将不会被设置。

      2. HttpOnly 属性: 同时,您可能还想设置 HttpOnly 属性,以防止通过客户端脚本访问 cookie,这增加了额外的安全层。

      代码分析

      根据您提供的 Flask 应用的 login 路由代码,我发现您已经设置了 session 和 cookie,但是没有显式地设置 SecureHttpOnly 属性。以下是修改后的代码示例:

      from flask import Flask, request, session, jsonify, make_response
      
      @app.route('/login', methods=['POST'])
      def login():
          data = request.json
          email = data['email']
          password = data['password']  # 注意这里应该是 'password' 而不是 'pas sword'
      
          # 查询用户信息
          # ... 省略数据库查询代码 ...
      
          if result:
              session['user'] = result[0]  # 将用户名存储在会话中
              response = make_response(jsonify({'success': True, 'username': result[0]}))
              # 设置 Secure 和 HttpOnly 属性
              response.set_cookie('username', result[0], secure=True, httponly=True, path='/')
              return response
          else:
              return jsonify({'success': False, 'message': 'Invalid email or password'})
      

      参考资料

      • Flask 官方文档关于 cookies 的部分。
      • Mozilla 开发者网络(MDN)关于 HTTP cookies 的详细介绍。

      注意事项

      • 确保您的服务器配置正确支持 HTTPS,因为设置 secure=True 后,如果通过 HTTP 访问,cookie 将不会被浏览器接受。
      • HttpOnly 属性可以提高安全性,但请根据您的应用需求决定是否使用。

      希望这些信息能帮助您解决 cookies 无法保存的问题。如果还有其他问题或需要进一步的帮助,请随时告诉我。

      展开全部

      评论 编辑记录
      画原晓雨 2024-06-14 10:31

      在使用httponly或者secure都是不能用,访问一直是用http

      回复
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      动态规划:组成目标货币的最少货币数
      达人评测i7 12700kf和i9 12900kf选哪个好
      leetcode-07-[344]反转字符串[541]反转字符串II[卡码网54]替换数字
      “蔚来杯”2022牛客暑假多校训练营部分题解 2
      Python 使用线程池分批执行设置等待时间
      多标签页文件管理器 - Win系统
      45 Float.NaN == Float.NaN 为 false 是怎么实现的?
      2022/7/30
      网络通信错误代码列表 HTTP 、FTP
      单片机原理及应用实验一交通信号系统(基于Proteus仿真)
    • 原文地址:https://ask.csdn.net/questions/8118515