2011-10-24 54 views
-3

我開發一個簡單的Ajax調用(與類型,URL和數據選項參數$就功能),在頁面的jQuery,但我得到403錯誤。 所以我已經添加到$ .ajax函數csrf的另一個選項參數,並相應的標記正確地顯示在模板中。 但我又得到了403錯誤。 我也嘗試添加,查看處理程序(在views.py)跨站請求僞造裝飾,像@csrf_protect@requires_csrf_token,但沒有改變。的Django + AJAX(jQuery的):HTTP錯誤代碼403(禁止)

有幫助嗎?

我已經看到了這種模式,使在Django https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#s-ajax

Ajax調用,但它是真正爲我做一個簡單的Ajax調用代碼太多,所以我覺得一個簡短的解決方案

+0

的文檔是有原因的。你得到一個403,因爲CSRF令牌不被傳遞。按照文檔說的做,你會沒事的。 –

+0

對不起,但我不知道如何接受。現在我看到按鈕接受。對我來說,這並不直觀,如果鼠標懸停事件處理程序會在鼠標懸停時着色按鈕,我認爲用戶體驗會更好。 –

回答

5

如果你不「不想使用CSRF保護這一觀點,你要裝飾是其他@csrf_exempt --those只會確保CSRF保護應用。這可能是最簡單的解決方案,尤其是在呼叫不是特別安全敏感的情況下。

此外,請確保你跟隨在這裏文檔中提到的方法:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#page-uses-ajax-without-any-html-form

+0

祕訣在於將其添加到views.py的頂部:'from django.views.decorators.csrf import ensure_csrf_cookie'
'@ ensure_csrf_cookie' – woohoo