【问题标题】:Why am I getting a 403 error “CSRF token missing” with Django?为什么我在 Django 中收到 403 错误“CSRF 令牌丢失”?
【发布时间】:2015-02-18 18:58:02
【问题描述】:

我在 Firefox 中使用 REST Easy 向 Django 中的简单表单发出 POST 请求,但它给了我一个 403 错误“2295 CSRF 令牌丢失或不正确”。

这是我的views.py(因为我在代理后面使用网络):

from django.shortcuts import render
import urllib2

def home(request):
    if request.method == 'POST':
        post = request.POST
        if 'passkey' in post:
            if post['passkey'] == '123':
                proxy = urllib2.ProxyHandler({'http': 'http://070.13095070:pujakumari123@10.1.1.19:80'})
                auth = urllib2.HTTPBasicAuthHandler()
                opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
                urllib2.install_opener(opener)
                j = urllib2.urlopen(post['url'])
                j_obj = json.load(j) 
                return HttpResponse(j_obj)
    else:
        return render(request, 'packyourbag/home_page.html')

还有我的模板文件:

<html>
    <body>  
        <form id="form" method="post">
            {% csrf_token %}
            url:<input type="text" name="url"/>
            Pass Key:<input type="text" name="passkey"/>
            <button type="submit" name="url_post">
                Post
            </button>
        </form>
    </body>
</html>

我正在传递一个 URL 和密码,但我不知道如何传递一个 CSRF 令牌(我什至不知道我是否必须传递这个)。

【问题讨论】:

  • plz 还告诉我要在我的代码中进行哪些更改......当我只是写@csrf_excempt 时,它给出了错误 - 'name 'csrf_excempt' is not defined'..再次帮助我请..:)

标签: python django django-csrf


【解决方案1】:

您可以通过在视图前添加@csrf_exempt 来禁用 CSRF 令牌要求:

首先在你的views.py顶部导入装饰器:

from django.views.decorators.csrf import csrf_exempt

然后像这样装饰你的视图:

@csrf_exempt
def home(request): 

警告:这将使您的视图容易受到跨站点请求伪造攻击。详情请见https://docs.djangoproject.com/en/dev/ref/csrf/

【讨论】:

    【解决方案2】:

    这是因为您没有通过 rest-easy 传递 CSRF 令牌。您可以按照@Selcuk 的建议进行操作,并在测试时使用@csrf_exempt 包装您的视图函数,或者您可以找到CSRF 令牌并使用rest-easy 发布它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2017-09-10
      • 2019-06-20
      • 2013-08-15
      • 2016-07-01
      • 2019-11-03
      • 2021-09-27
      相关资源
      最近更新 更多