在ajax prefilter

时间:2017-09-21 05:59:04

标签: jquery ajax django cookies

以下是我所知道的事情 -

  1. 在我的查看方法中有@ensure_csrf_cookie正在加载模板。
  2. 在模板中我需要csrf令牌,所以我从cookie中获取它并进行第三方api调用。
  3. 从第三方api电话中我得到了同样的csrf令牌。
  4. 有一个ajax prefilter设置,它从该模板的所有ajax调用中从浏览器cookie发送csrf令牌。
  5. 但我想发送我从第三方api电话中获得的csrf令牌。
  6. 如何覆盖ajax prefilter?

    如果这个问题看起来是正确的,请告诉我。或者我以错误的方式理解这一点。

1 个答案:

答案 0 :(得分:1)

这对我有用。请参阅以下步骤 -

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

  2. 在上述方法的模板中的ajax调用中,我添加了

    标题:{   " X-CSRFToken":[来自第三方Api电话的CSRF令牌] }

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

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