Получить JSESSIONID в Angular приложениях - PullRequest
0 голосов
/ 23 марта 2020

надеюсь, вы можете помочь мне с этим.

Я разрабатываю приложение с использованием Angular 8, которое вызывает некоторые Java REST Services (не бэкэнд Spring, сервисы написаны с использованием только Джерси). При разработке бэкэнд-сервисов я использовал приложение Postman для их тестирования, и это привело меня к ошибке: кажется, что Postman автоматически управляет JSESSIONID, поэтому, когда я пытаюсь вызвать свой сервис в приложении Angular, я понял, что должен сделать это вручную.

Реальный вопрос в том, как управлять этим идентификатором в Angular? Когда я вызываю свой первый сервис, сервис входа в систему, в сеансе «Сеть» консоли Chrome я вижу в заголовках ответа поле:

Set-Cookie: JSESSIONID=averylongstring

Я пытался, следуя другим другим вопросам, получить его с

response.headers.get('Set-Cookie')

, но возвращает ноль. Если я пишу

console.log(response.headers)

в методе .subscribe, я не вижу соответствующего заголовка, картинка выглядит следующим образом:

enter image description here

Как я могу получить доступ к этому идентификатору? Ошибка в Angular обработке ответа или в обслуживании? Я попытался вернуть сначала настраиваемый сериализуемый компонент, а затем объект javax.ws.rs.core.Response, надеясь исправить, но я получаю ту же ситуацию.

1 Ответ

0 голосов
/ 23 марта 2020

Мы используем ngx-cook ie -сервис для управления файлами cookie в наших Angular приложениях. Вот как вы можете настроить его:

npm install ngx-cookie-service --save

или

yarn add ngx-cookie-service

Добавьте сервис повара ie к вашему app.module.ts в качестве поставщика:

import { CookieService } from 'ngx-cookie-service';

@NgModule({
  ...
  providers: [ CookieService ],
  ...
})
export class AppModule { }

Затем импортируйте и вставьте его в конструктор:

constructor( private cookieService: CookieService ) { 
  this.cookieValue = this.cookieService.get('JSESSIONID');
}

В качестве альтернативы вы можете просто получить доступ к document.cookie, но это было бы гораздо менее явно.

...