2016-05-31 33 views
0

我正在一個Django的角度應用程序,並需要做出這等CSRF令牌在所有角AJAX後或將請求。我使用ngCookies,但是當我嘗試分配餅乾CSRF令牌的所有角度支柱頭,它給我的錯誤:

TypeError: Cannot read property 'csrftoken' of undefined 

$的CookieStore也是不確定的,並使用獲得$方法餅乾不工作。我正在加載適合我角度版本的angular-cookies的正確腳本,並且我沒有收到有關ngCookies本身的任何錯誤,所以我不確定它可能是什麼?

(function() { 
    'use strict'; 

Config.$inject = ["$locationProvider", "$stateProvider", "$urlRouterProvider", "$httpProvider"]; 
angular 
    .module('app.guest', [ 
     'app.common', 
     'app.core', 
     'app.repo', 
     'ui.bootstrap', 
     'ngCookies' 
    ]) 
    .config(Config); 
    .run(['$cookies'], function ($rootScope, $http, $cookies) { 
      // set the CSRF token here 
      $http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken; 
     }) 

/** ngInject */ 
function Config($locationProvider, $stateProvider, $urlRouterProvider, $httpProvider, $cookies) { 

    broadcastReady.$inject = ["CommonService", "CommonEvents"]; 
    $locationProvider.html5Mode(true); 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 
    $httpProvider.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken; 

控制檯

vendor.js:12275 Uncaught Error: [$injector:modulerr] Failed to instantiate module app.guest due to: 
TypeError: Cannot read property 'csrftoken' of undefined 

回答

1

$inject列表的末尾添加"$cookies"

Config.$inject = ["$locationProvider", "$stateProvider", "$urlRouterProvider", "$httpProvider", "$cookies"]; 

確保裝入angular-cookies.js了。

+0

似乎並沒有工作。我猜你不能將服務注入到模塊配置中,你必須將其注入到模塊運行塊中。儘管如此,它仍然是未定義的。 – JBT

+0

啊我不知道你正在運行一個'配置()'和你想做什麼裏面加上'X-CSRFToken'到您的文章標題。在這種情況下,設置'xsrfCookeName'和'xsrfHeaderName'應該足夠了,你不需要明確設置在'headers.post' –

+0

AHHHH cookie的,所以當我設置$ httpProvider.defaults.xsrfHeaderName =「X-CSRFToken」;那已經將cookie值設置爲任何郵件頭? – JBT