gpt4 book ai didi

ajax - 如何在Django的预检CORS POST请求中处理CSRF?

转载 作者:行者123 更新时间:2023-12-04 12:32:30 24 4
gpt4 key购买 nike

我正在尝试通过AJAX从POSTabc.com(这是Django应用程序)的URL来发出xyz.com请求。
我通过对GET上的URL发出xyz.com请求来获取CSRF token ,但是当对预检请求中的OPTIONS进行xyz.com请求时, token 会更改。

有什么办法可以在预检请求中获得OPTIONS请求的响应?

注意:

我正在按照以下来源的指示进行操作:

  • https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
  • https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS
  • http://www.html5rocks.com/en/tutorials/cors/
  • 最佳答案

    Django CSRF保护将允许OPTIONS请求,因此第一阶段没有问题:

    https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-it-works

    如果我的理解正确,则您希望允许下一个请求(例如跨域POST)通过。为了使此功能生效并超越Django的CSRF保护,请求必须发送CSRF token (在POST数据中或在AJAX的 header 中)和匹配的CSRF cookie。

    现在,跨域限制使得abc.com无法通过javascript或服务器端响应为xyz.com设置或读取cookie。因此,这种方法是不可能的。

    相反,您将不得不将@csrf_exempt应用于 View 。这将允许任何网站发布到它。因此,您将需要在 View 中内置一些其他保护。当然,您可以自己检查保护的安全性。请记住,'Referer'和'Origin' header 可以很容易地使用诸如curl之类的基本伪造而成。

    关于ajax - 如何在Django的预检CORS POST请求中处理CSRF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948905/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com