#c# #django #django-csrf #csrf-token
#c# #django #django-csrf #csrf-токен
Вопрос:
Я отправляю данные в приложение django с использованием кода C #:
using (WebClient client = new WebClient())
{
NameValueCollection postData = new NameValueCollection()
{
{ "user_id", "12345" }
};
string pagesource = Encoding.UTF8.GetString(client.UploadValues(url_ad, postData));
}
Но я получаю эту ошибку:
Запрещено (CSRF cookie не установлен.)
Код для получения данных в 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:
Вы можете освободить проверку csrf, поместив в свою функцию следующий декоратор:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def get_user_id(request):
...
Комментарии:
1. Хотя отключить эту защиту не очень хорошая идея, я попробовал, но она просто отключила ошибку, но код по какой-то причине перестал работать
2. Вероятно, потому, что response_data не определен.
3. Да, я думаю, это была проблема. Но все же я думаю, что это неправильное решение