2017-02-14 67 views
2

從jquery調用ajax調用到django views.index時,我沒有設置CSRF cookie(我已經嘗試了我在其他stackoverflow帖子中看到的所有內容,請參閱list在帖子的底部)從jQuery到Django進行ajax調用時沒有設置CSRF

我的Ajax調用:

​​

我views.index功能:

@csrf_exempt 
def delete_me(comment_id): 
    comment = get_object_or_404(Comment, pk=comment_id) 
    comment.delete() 
    return "success" 

我的URL模式:

url(r'^(?P<comment_id>[0-9]+)/$', views.delete_me, name='delete'), 

在JavaScript中調用delete_comment函數時會觸發403禁止的錯誤。我已經試過所有我看到的現有堆棧溢出板:

-installing and adding corsheaders to settings 
-including a @csrfexempt decorator in views.index 
-setting CSRF_COOKIE_SECURE to false in settings 
-adding the csrftoken header to the request (per django documentation) 
-setting a CSRF_TOKEN on the window in my html 

似乎沒有任何工作......人對如何解決這一問題有何建議?或者問題可能是什麼。

+1

既然你有'csrf_exempt',它根本不應該有關於令牌的問題,你是否有多個python實例在運行? – Sayse

+1

您確定此請求正在路由到該視圖嗎?你有其他的URL模式可以自己匹配ID嗎? –

+0

@Sayse沒有隻有一個python實例正在運行 – DannyMoshe

回答

1

由於您在ajax調用中對http://localhost:8000/進行了硬編碼,因此您可能會遇到跨域問題。這可能是請求被拒絕的原因。如果這是您定位的網址,請嘗試將'http://localhost:8000/'替換爲'/'。

+1

非常感謝!這解決了這個問題。這是有道理的,因爲我必須刪除!this.crossDomain條件評估爲false。 – DannyMoshe

+1

我最近有同樣的問題。很高興幫助你。和平 – DavNej