2012-11-27 95 views
0

我写了一个简单的Django视图:Django的视图返回JSON失败,CSRF

from django.http import HttpResponse 
from django.utils import simplejson 
from django.views.decorators.csrf import csrf_exempt # just add 

@csrf_exempt 
def handleRequest(request, intervention_code): 
    result = {} 
    norm_str = '' 
    ........ 
    return HttpResponse(simplejson.dumps(result), mimetype='application/json') 

视图使用没有模板,只需查询数据库和JSON格式返回数据。 我可以检索JSON对象容易做http://myserver/myurl

不幸的是,我必须使用JavaScript库进行POST AJAX请求得到相同的JSON对象,我碰上了典型的Django CSRF失败。

当我这样做:curl -d "sometext=foobar" http://myserver/myurl/我得到了同样的结果。 我从Django doc实现了所有推荐的CSRF中间件,但仍然出现错误。

+0

这还不够...向我们展示如何将请求发送到服务器 –

+0

当您执行ajax post时,您是否将CSRF令牌发送到服务器? –

+0

请详细说明。 AJAX调用是通过从普通html文件调用的javascript函数制作的 –

回答

2

该文档describes您需要做什么才能让CSRF与Ajax一起工作。

+0

感谢您的帮助。 Daniel将我指向Django文档,现在它工作正常。我选择了实现它而不用接触ajax脚本。 –