2012-11-27 94 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腳本。 –