Django没有返回CSRF令牌

时间:2014-02-19 14:34:13

标签: wpf django django-csrf

我使用C#和Django实现了一个应用程序,我的问题是,当我在客户端登录时,服务器返回所有正确的,sessionid以及除csrf令牌之外的所有内容。

我在middleware_classes的设置文件中有它。这是因为我直接通过其IP地址访问服务器吗?

我的django登录功能

class loginMobile(GenericAPIView):
    serializer_class = loginSerializer

    def post(self, request):
        try:
            email = request.DATA.get('email')
            password = request.DATA.get('password')

            user_django = authenticate(username=email, password=password)
            login(request, user_django)

            return Response({'success': True})
        except:
            return Response({'success': False})

我的C#请求:

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream  
                    StreamReader reader = new StreamReader(response.GetResponseStream());

                        if (response.Cookies != null && response.Cookies.Count != 0)
                        {
                            this.cookie_col = response.Cookies;

                            this.cookies = new List<Cookie>();
                            foreach (Cookie c in response.Cookies)
                            {
                                this.cookies.Add(c);
                                if (c.Name.Equals("csrftoken"))
                                    this.csrf_token = c.Value;
                            }
                        }
                }

在“response.cookies”中我只得到“sessionid”而不是“csrftoken” 当我在服务器中托管应用程序时,它也会发生这种情况,它就像我本地计算机上的一个魅力

1 个答案:

答案 0 :(得分:0)

所以我弄清楚如何解决我的问题,

我强迫django像这样返回csrf令牌:

return Response({'success': True, 'csrf':csrf(request)})