Получение Запрещенного (файл cookie CSRF не установлен.) От django в C # - PullRequest
0 голосов
/ 17 апреля 2019

Я отправляю данные в приложение django, используя код C #:

using (WebClient client = new WebClient())
{
    NameValueCollection postData = new NameValueCollection()
           {
              { "user_id", "12345" }
           };
    string pagesource = Encoding.UTF8.GetString(client.UploadValues(url_ad, postData));
}

Но я получаю эту ошибку:

Запрещено (файл cookie CSRF не установлен.)

Код для получения данных в django views.py:

def get_user_id(request):
    if request.method == 'POST':
        user_id = request.POST.get('user_id')
        record = User.objects.filter(user=user_id)
        if not record:
            new_user = User(user = user_id)
            new_user.save()
        return HttpResponse(
            json.dumps(response_data),
            content_type="application/json"
        )
    else:
        return HttpResponse(
            json.dumps({"nothing to see": "this isn't happening"}),
            content_type="application/json"
        )

Я знаю, что это за ошибка и как ее исправить в веб-приложениях, но я не знаю, как ее устранить при отправке данных с использованием C #.

Кроме того, поскольку я не использую .NET Framework 4.5+, я не могу использовать HttpContent, который, как я слышал, может как-то это исправить.

Так как же это исправить с помощью WebClient или любых других доступных решений для .NET Framework 4?

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете освободить проверку csrf, добавив в вашу функцию следующий декоратор:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def get_user_id(request):
   ...
...