2013-07-06 45 views
0

我開始使用基於django的簡單ajax啓用的web應用程序。在發送POST時獲取403錯誤URL

我可以啓動該頁面。從主頁時,我試着打另一個URL我收到403錯誤

我的索引頁是http://mydomain.com/SampleApp - 這工作得很好

我阿賈克斯網址爲http://mydomain.com/SampleApp/ajax - 這給了403錯誤

請更換「MYDOMAIN。 com'在適當的本地主機:8000,因爲它是受限制的。

所示的誤差是

CSRF驗證失敗。請求中止。 給出失敗的原因: CSRF cookie未設置。

我覺得我缺少settings.py中

一些重要的設置添加的源代碼

URL的conf

url(r'^SampleApp/', include('views.urls')) 

views.url.py

urlpatterns = patterns('', 
    url(r'^ajax/$', views.ajax), 
    url(r'^$', views.index) 
) 

views.views.py

def index(request): 
    print('Rendering Index') 
    return render(request, 'index.html') 

def ajax(request): 
    print('rendering ajax') 
    return render(request, 'ajax.html'); 

爲了簡潔起見,我已經排除了進口

+0

你有一些.htaccess文件嗎? PD:它給我一個404錯誤沒有403 – Seazoux

+0

沒有HtAccess文件。作爲格式良好的html,我得到了Forbidden(403)錯誤。 –

+0

你的代碼在哪裏? – catherine

回答

0

它看起來像你沒有把csrfmiddlewaretoken在您的Ajax請求。 包括它的最簡單的方法是:

var data = { 
     'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(), 
     // any other data 
    }, 
    url = '/api/create/'; 
    $.ajax({ 
     type: 'POST', 
     url: url, 
     data: data, 
    ... 

而且不要忘記,包括{% csrf_token %}在你的頁面模板從Ajax請求被髮送(如index.html的)

或者你可以裝飾通過@csrf_exempt裝飾你的觀點:

from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def ajax(request): 
    print('rendering ajax') 
    return render(request, 'ajax.html'); 

這可以讓你從Ajax請求排除csrfmiddlewaretoken

希望能幫助你。

相關問題