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 框架 4 或任何其他可用的解决方案来修复它?

4

1 回答 1

1

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

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def get_user_id(request):
   ...
于 2019-04-17T07:21:41.803 回答