从C#

时间:2019-04-17 07:15:48

标签: c# django django-csrf csrf-token

我正在使用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的任何其他可用解决方案对其进行修复?

1 个答案:

答案 0 :(得分:0)

您可以通过在函数中添加以下修饰符来免除csrf检查:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def get_user_id(request):
   ...