在C#中从django获取禁止(CSRF cookie未设置。)错误

问题描述 投票:0回答:1

我正在使用C#代码将数据发送到django应用程序:

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"
        )

我知道错误是什么以及如何在Web应用程序中修复它,但我不知道如何在使用C#发送数据时解决它。

此外,因为我不使用.NET framework 4.5+我不能使用HttpContent,我听说能够以某种方式解决这个问题。

那么如何使用WebClient或任何其他可用的.NET Framework 4解决方案来修复它?

c# django django-csrf csrf-token
1个回答
0
投票

您可以通过在函数中放置以下装饰器来免除csrf检查:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def get_user_id(request):
   ...
© www.soinside.com 2019 - 2024. All rights reserved.