【问题标题】:Flask CSRF: The CSRF session token is missingFlask CSRF:缺少 CSRF 会话令牌
【发布时间】:2020-02-10 18:56:41
【问题描述】:

谁能指导我在使用 Fetch 时如何使用 Flask-WTF CSRF 保护? API 文档似乎并不清楚如何处理每个请求生成的 CSRF 令牌

我不断收到此错误

The CSRF session token is missing.

还有我的 javascript 代码:

let payload = {
            // some data,
          "X-CSRFToken": csrf_token
          }

    let header = {   'content-type': 'application/json','accept': 'application/json',"X-CSRFToken": csrf_token}
    paypal.Buttons({

        createOrder: function(data, actions) {
                    return fetch(prefix.concat("/payment/paypalCreate"), {
                      method: "POST",
                      headers: header ,
                      body:JSON.stringify(payload),
                      credentials: 'same-origin',
                      })
                        .then(function(res) {
                            return res.json();
                        }).then(function(data) {
                          console.log(typeof(data))
                            return data.id
                        })
                    .catch(err => {
                      console.log(err);
                    });
            }

【问题讨论】:

  • 您必须将 CSRF 令牌添加到您的请求中,如 flask-wtf.readthedocs.io/en/stable/… 中所述。
  • @KlausD。我确实做到了。似乎它正在检查会话数据。是否还需要在会话中设置 CSRF 令牌?错误指出“缺少 CSRF 会话令牌”。

标签: python flask csrf flask-wtforms


【解决方案1】:

使用来自 Flask_cors 的 CSRF 并在其中包装您的应用程序。那时您不需要显式使用 csrf_token 。使用请参考FLASK-CORS

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 2021-10-23
    • 2021-11-23
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2013-08-28
    相关资源
    最近更新 更多