2013-05-21 8 views
14

http://docs.angularjs.org/api/ng से। $ Http, यह कहता है कि हमें टोकन को शामिल करने के लिए डिफ़ॉल्ट शीर्षलेख सेट करना चाहिए, इसलिए मैं इसका अनुसरण कर रहा हूं।कोणीय, django और csrf

मेरे कोड इस

var myapp = angular.module('myapp', ['ngCookies', 'ui.bootstrap']). 
    config(['$routeProvider', function($routeProvider, $httpProvider, $cookies){ 
     $routeProvider. 
      when('/', { 
       templateUrl: '/partials/home.html', 
       controller: HomeCtrl 
      }). 
      when('/game/:gameId/shortlist/create',{ 
       templateUrl: '/partials/create-shortlist.html', 
       controller: CreateShortlistCtrl 
      }). 
      otherwise({redirectTo: '/'}); 
    }]); 

myapp.run(function($rootScope, $http, $cookies, $httpProvider){ 
    $http.get('/api/get-current-user').success(function(data){ 
     $rootScope.current_user = data; 
     $rootScope.current_team = $rootScope.current_user.team; 
    }); 
    $http.get('/api/get-current-season').success(function(data){ 
     $rootScope.current_season = data; 
    }); 
    $rootScope.csrf_token = $cookies.csrftoken; 
    console.log($httpProvider.defaults.headers.common); 
    //$httpProvider.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken; 
}); 

की तरह कुछ चला जाता है के रूप में आप, मैं आवेदन किया है कई दृष्टिकोण देखते हैं लेकिन CSRF टोकन के माध्यम से शीर्ष लेख सेट करने में असमर्थ हूँ कर सकते हैं। मुझे मिली दो त्रुटियां हैं

Uncaught Error: Unknown provider: $httpProviderProvider <- $httpProvider

मैं क्या गलत कर रहा हूं?

उत्तर

21

आप AngularJS 1.1.3 या नए आप xsrfHeaderName और xsrfCookieName उपयोग कर सकते हैं का उपयोग करते हैं:

var myapp = angular.module('myapp', ['ngCookies', 'ui.bootstrap']). 
    config(['$routeProvider', function($routeProvider, $httpProvider, $cookies){ 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
    ... 

$location देखें 1.1.3 दस्तावेज में।

+0

बेहतर तरीका है। क्योंकि यह प्रोटैक्टर के साथ इकाई/ई 2e परीक्षण पास करता है – debuggerpk

15

आप कॉन्फ़िगरेशन विधि में केवल $httpProvider का उपयोग कर सकते हैं। लेकिन समस्या यह है कि आप कॉन्फ़िगरेशन विधि में $cookies का उपयोग नहीं कर सकते हैं। वहां केवल $cookiesProvider समर्थित है। Module Loading & Dependencies अनुभाग में वर्णित (थोड़ा) वर्णित है।

, तो आप क्या कर सकते हैं आप कर सकते हैं के रूप में angularjs.org docs

में सुझाव दिया तो अपने उदाहरण काम करने के लिए रनटाइम पर हेडर सेट किया गया है निम्नलिखित:

var myapp = angular.module('myapp', ['ngCookies', 'ui.bootstrap']). 
    config(['$routeProvider', function($routeProvider){ 
     $routeProvider. 
      when('/', { 
       templateUrl: '/partials/home.html', 
       controller: HomeCtrl 
      }). 
      when('/game/:gameId/shortlist/create',{ 
       templateUrl: '/partials/create-shortlist.html', 
       controller: CreateShortlistCtrl 
      }). 
      otherwise({redirectTo: '/'}); 
    }]); 

myapp.run(function($rootScope, $http, $cookies){ 
    // set the CSRF token here 
    $http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken; 

    $http.get('/api/get-current-user').success(function(data){ 
     $rootScope.current_user = data; 
     $rootScope.current_team = $rootScope.current_user.team; 
    }); 
    $http.get('/api/get-current-season').success(function(data){ 
     $rootScope.current_season = data; 
    }); 
}); 

और भूल नहीं है शामिल करने के लिए आपकी एचटीएमएल फाइल में angular-cookies.js फ़ाइल!

+1

thankyou कर सकता है, इस चाल – debuggerpk

संबंधित मुद्दे