python - Python,Flask WTF:会话中缺少令牌
问题描述
我有 :
- 后端 python Flask API
- React 前端(使用 axios 处理请求)
这是我的 CSRF 后端代码:
from flask import Flask
from flask_cors import CORS
from flask_wtf.csrf import CSRFProtect, generate_csrf
app = Flask(__name__)
CSRFProtect(app)
CORS(app)
@app.after_request
def inject_csrf_token(response):
csrf_token = generate_csrf()
response.set_cookie('csrf_token', csrf_token)
return response
前端代码:
import axios from 'axios';
import Cookies from 'js-cookie'
const API_URL = `https://${window.location.hostname}:7000/v2/`;
const api = axios.create({
baseURL: API_URL,
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': Cookies.get('csrf_token')
}
});
export default api;
如您所见,当我向我的 API 发布请求时,CSRF 令牌在这里:
X-CSRF-令牌:IjNhM2YxY2ZhNDcyYzMzZDFlZjhlMWExYmMzMWNmNTI3NzFhNDhkMjki.X9Ce-Q.E_5se2uLaCaQDAiYUOMZ4kVNtBs
但我收到了这样的回应:
400 错误请求 CSRF 会话令牌丢失。
问题似乎出在烧瓶会话中:当我session
从烧瓶调试对象时,存在令牌:
但是在 Flask WTF CSRFProtect 代码中是空的
我正在使用 Flask-WTF==0.14.3
解决此会话问题的任何帮助将不胜感激
解决方案
推荐阅读
- react-native - React Native 警告:列表中的每个孩子都应该有一个唯一的“键”道具
- flutter - 平滑地将 Flutter TextField 动画化为 Text
- assembly - 为什么我的循环在 3 处停止,并报告错误的顺序
- git - 一个 GitHub 存储库中同一项目的多个版本
- python - 为什么我只得到第一个元素?
- vue.js - 有没有办法在 q-table 中的 q-td 的 q-popup-edit 组件中的每个输入上触发 vuex 突变?
- javascript - 如何使用表单输出制作数组并使用 express 发布到 mongodb
- react-native - 由于 expo 34.0.0 更新字体不再加载,你知道我该如何解决吗?
- swift - 需要在一系列 getDocument 价格查询后获取购物车总和
- c++ - 如何在opencv中检测标记的6d姿势?