我寫了一個簡單的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中間件,但仍然出現錯誤。
這還不夠...向我們展示如何將請求發送到服務器 –
當您執行ajax post時,您是否將CSRF令牌發送到服務器? –
請詳細說明。 AJAX調用是通過從普通html文件調用的javascript函數製作的 –