【问题标题】:Change django csrf token in ajax prefilter在 ajax 预过滤器中更改 django csrf 令牌
【发布时间】:2018-03-02 08:45:44
【问题描述】:

这是我知道的 -

  1. @ensure_csrf_cookie 在我正在加载模板的视图方法上。
  2. 在模板中我需要那个 csrf 令牌,所以我从 cookie 中获取它并进行第 3 方 api 调用。
  3. 通过第 3 方 api 调用,我得到了相同的 csrf 令牌。
  4. 在来自该模板的所有 ajax 调用中,有一个 ajax 前置过滤器设置从浏览器 cookie 发送 csrf 令牌。
  5. 但我想发送我从第 3 方 api 调用中获得的 csrf 令牌。

如何覆盖 ajax 预过滤器?

让我知道这个问题是否正确。或者我理解错了。

【问题讨论】:

    标签: jquery ajax django cookies


    【解决方案1】:

    这对我来说是一个修复。请参阅以下步骤 -

    1. 我从 django.views.decorators.csrf import csrf_protect 导入并在该模板中 api 将从 ajax 调用的方法上放置了一个装饰器 @csrf_protect。

    2. 在该模板中针对上述方法的 ajax 调用中,我已添加

      标题:{ “X-CSRFToken”:[我从第 3 方 Api 调用中获得的 CSRF 令牌] }

    3. 在我的 ajax 预过滤器中,如果已检查此标头参数是否已设置,则停止从浏览器 cookie 设置它。

      if(!options.headers["X-CSRFToken"]) options.headers["X-CSRFToken"] = [来自浏览器 cookie 的 CSRF 令牌]; }

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 1970-01-01
      • 2015-01-27
      • 2019-01-13
      • 2018-01-16
      • 2014-12-06
      • 2016-02-08
      • 2016-05-17
      • 2013-08-11
      相关资源
      最近更新 更多