Jquery запрос к django получает ошибку 403 даже после отключения CSRF - PullRequest
1 голос
/ 15 июня 2011

Я новичок в Django и работаю над небольшим проектом, где клиент JQuery отправляет запрос JSON (имя пользователя и пароль) на страницу моего сервера DJango. Но Джанго каждый раз выдает ошибку 403. Это ошибка, которую я получаю:

 POST /html/localhost HTTP/1.1" 403 2326

Это разочаровывает, так как это очень базовая настройка, которая включает в себя взаимодействие клиента <-> с сервером.

Моя клиентская форма:

<form id="loginForm" action="vs.djangoserver" method="post"> 
User: <input type="text" name="username" /> 
Pass: <input type="password" name="password" /> 
<input type="submit" value="Submit" /> 

vs.djangoserver отображается правильно (или я так думаю), и я могу перейти к нему с помощью тестового сервера Django.

Код JQuery, который отправляет поля формы в виде JSON, находится здесь:

    $.ajax({
       type: "POST",
       url: formAction,
       data: printableJSONStr,
       dataType: "json",
       beforeSend: function(x,y) {
         if (x && x.overrideMimeType) {
           x.overrideMimeType("application/j-son;charset=UTF-8");
         }
       },
       success: post_submit
     });

Что меня смущает, так это как разместить POST на странице, которую Django создает и обслуживает на лету. Я в восторге от защиты Джанго от CSRF, и я добавил это к мнению моего Джанго:

from django.views.decorators.csrf import
@csrf_exempt
def .......

Еще одна вещь, которую я попробовал, - указать на несуществующее действие в клиентской форме. В этом случае я получил ту же ошибку 403 (вместо 404, как я ожидал).

Я ищу простой (но полный) пример, в котором JQuery указывает на страницу django, и она работает!

...