2015-03-10 3 views
1

Я разрабатываю веб-приложение с помощью AngularJS.Отправьте куки-файл в http-запросы от внешнего интерфейса к серверу с помощью Angular

Приложение реализовано с:

  • внешний интерфейс, компонент без логики, которая просто запрашивает бекенд много раз, чтобы получить от него все необходимые данные;
  • Бэкэнд, содержащий множество сервисов RESTful, и каждый из них возвращает данные во внешний интерфейс (если интерфейс вызывает его).

В моем веб-интерфейсе, в основном контроллере, создать печенье, используя $ CookieStore, таким образом:

// Setting sessionID in the cookie 
$cookieStore.put('sessionID', $scope.contextData.sessionId); 

Теперь я хочу, чтобы отправить информацию об этом куки для общего обслуживания серверной что я звоню. Например, один из моих звонков имеет такую ​​форму:

$http({ 
     method: "GET", 
     url: urlBase + "/context/person" 
    }).success(function(result, status, headers, config) { 
     $scope.currentPerson = result; 
    }); 

Как отправить cookie? Спасибо заранее.

+0

$ cookieStore устарел, попробуйте использовать $ cookies.put() – Rohan

ответ

2

Вы должны установить аргумент withCredentials см docs

По умолчанию, вызов производится без Cookies. Поскольку это простой запрос GET, он не предваряется, но браузер отклоняет любой ответ, который не имеет заголовка Access-Control-Allow-Credentials: true, и не делает ответ доступным для вызывающего веб-контента.

Я предполагаю, что вы запускаете скрипт в том же домене сервера, потому что

Поскольку только JavaScript, который работает на вашем домене может прочитать куки, сервер может быть уверен, что XHR пришел из JavaScript работает в вашем домене. Заголовок не будет установлен для междоменных запросов.

0
$http({ 
    method: "POST", 
    url: urlBase + "/context/person" 
}).success(function(result, status, headers, config) { 
    $scope.currentPerson = result; 
}); 

или вы можете использовать угловой метод контекстного сообщения:

$http.post('/someUrl', data, config).then(successCallback, errorCallback); 

POST метод будет посылать кук в бэкэнд. В бэкэнд вы можете использовать JSON.parse(req.cookies) для получения ваших файлов cookie.