我在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令牌(我甚至不知道是否必须通过这个)。
答案 0 :(得分:0)
这是因为您没有通过rest-easy
传递CSRF令牌。你可以像@Selcuk建议的那样做,并在测试时用@csrf_exempt
包装你的视图功能,或者你可以找到带有rest-easy
的CSRF令牌和POST
答案 1 :(得分:0)
您可以通过在视图前添加@csrf_exempt
来禁用CSRF令牌要求:
首先导入views.py:
顶部的装饰器from django.views.decorators.csrf import csrf_exempt
然后装饰你的视图:
@csrf_exempt
def home(request):
警告:这会使您的视图容易受到跨站点请求伪造攻击。有关详细信息,请参阅https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/。