【问题标题】:Python/Django: 403 error when third-party website makes POST callPython/Django:第三方网站进行POST调用时出现403错误
【发布时间】:2013-11-24 02:23:21
【问题描述】:

我有一个 django 应用程序,用户在其中注册并使用 OAuth 关联第三方帐户。作为其中的一部分,我在第三方网站上创建了一个订阅,每当第三方网站发生某些事件时,它将向给定端点发出 POST 请求。当第三方网站进行 POST 调用时,我收到以下错误 -

"POST /notification HTTP/1.1" 403 2282

而且,如果我理解正确,那是因为请求中缺少 csrf 令牌。如何忽略csrf 检查?

【问题讨论】:

    标签: python django


    【解决方案1】:

    @crsf_exempt decorator 添加到您的视图函数中:

    此装饰器将视图标记为不受中间件确保的保护。示例:

    from django.http import HttpResponse
    from django.views.decorators.csrf import csrf_exempt
    
    @csrf_exempt
    def my_view(request):
        return HttpResponse('Hello world')
    

    【讨论】:

      【解决方案2】:

      您可以忽略所有形式的 csrf,在 settings.py 中在中间件类列表中注释此行。

      MIDDLEWARE_CLASSES = (
          ....
          # 'django.middleware.csrf.CsrfViewMiddleware',
          ....
      )
      

      【讨论】:

        猜你喜欢
        • 2017-03-05
        • 2018-07-24
        • 1970-01-01
        • 1970-01-01
        • 2017-09-14
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 2012-12-24
        相关资源
        最近更新 更多