2014-02-19 107 views
1

我使用C#和Django實現了一個應用程序,我的問題是,當我在客戶端登錄時,服務器返回一切正確,sessionid和除csrf標記之外的所有東西。Django不返回CSRF令牌

我在中間件類的設置文件中有它。這是因爲即時通過其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」 我只得到了 「會話ID」 不是我 「csrftoken」 還發生這種情況託管在一個服務器的應用程序,它就像我的本地機器上的魅力

+0

會是這樣的答案http://stackoverflow.com/a/16703297/202168我有我的C#應用​​程序的問題 – Anentropic

+0

通知,它在瀏覽器上工作正常...... – pedrotorres

+0

我對C#一無所知,但瀏覽器是否有可能從另一個頁面查看csrf cookie,而您的C#應用​​程序只調用json(?)視圖,而該視圖缺少templatetag或裝飾者告訴Django發送cookie?所以還http://stackoverflow.com/questions/20361653/template-less-django-ajax-does-djangos-csrf-token-get-updated-during-the-cou?rq=1 – Anentropic

回答

0

所以我弄清楚如何解決我的問題,

我強迫Django的返回CSRF令牌是這樣的:

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