2014-10-29 3 views
2

Я новичок в веб-разработке и в angularJS. Я знаю, как перехватить ответ, используя угловые перехватчики. Теперь я хочу добавить файлы cookie к этому ответу, к которому можно получить доступ позже, используя $cookieStore.get('DEMO_COOKIE'). Как мне это сделать? В основном я хочу знать, следующий участок кода:угловой: как установить файлы cookie в перехваченный заголовок ответа?

angular.module('APP').factory('myInterceptor', function() { 
     return { 
      response: function(response) { 
       // code here for modifying incoming response by adding cookies to it 
       /* 
       Or Is this the right way to do it? 
       response.headers()['Set-Cookie']= 'DEMO_COOKIE=demo_session; expires=Sat, 18 Oct 2014 23:38:25 GMT; username=public; role=public'; 
       */ 
       return response 
      } 
     } 
    }) 


    angular.module('APP').config(['$httpProvider', function($httpProvider) { 
     $httpProvider.interceptors.push('myInterceptor'); 
    }]); 

С текущего кода я получаю неопределенное значение для $cookieStore.get('DEMO_COOKIE'). Однако, если вышеуказанный код является правильным, чем это может быть связано с некоторой другой ошибкой в ​​моем коде. Спасибо заранее ...

ответ

0

Вы можете сделать это, введя $cookieStore вашему перехватчику. Затем вы можете использовать $cookieStore.put() метод, чтобы добавить печенье:

angular.module('APP').factory('myInterceptor', ['$cookieStore', function ($cookieStore) { 
    return { 
     response: function (response) { 
      $cookieStore.put('DEMO_COOKIE', 'I am a cookie!!!'); 
      return response; 
     } 
    }; 
}]); 


angular.module('APP').config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.interceptors.push('myInterceptor'); 
}]); 
+0

выше решение работает, но я думаю, что это можно сделать с помощью любого доступного глобально массива (а не только $ CookieStore) .so таким образом его не модификации исходного заголовка ответа, в этом решении $ cookieStore просто работает как глобальная служба для передачи данных. На самом деле, я работаю в беззащитной среде, и я пытаюсь имитировать точный ответ с сервера, который содержит файлы cookie в своих заголовках. Я создал виртуальный бэкэнд с использованием grunt, который служит для ответа, но я не могу использовать cookie через него. если я ошибаюсь). Есть ли способ достичь этого? – Abdul23

Смежные вопросы