весенний отдых API не может установить Set-Cookie - PullRequest
0 голосов
/ 12 марта 2019

Среда

springBootVersion = '2.1.0.RELEASE'

Linux: 18,01 LTS

Context

У меня есть текущий метод в контроллере:

@PostMapping(value = "")
public ResponseEntity<String> login(@RequestBody @Valid LoginCredentials loginCredentials) {
    return ResponseEntity.status(HttpStatus.OK)
        .header(HttpHeaders.SET_COOKIE, "Authorization=" + "Bearer " + token)
        .build();
}

, и мои cors настроены правильно

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
        .allowedOrigins("*")
        .allowedHeaders("*")
        .allowedMethods("*")
        .allowCredentials(true);
}

Я такжеПолучите от почтальона, что заголовки верны

enter image description here

Тем не менее, заголовок set-cookie не отправляется.

То же самое происходит, когдаЯ использую угловое приложение для отправки запроса с

    return this.http.post(this.LOGIN_URL, loginCred, {withCredentials: true});

Как видите, для учетных данных установлено значение true.тем не менее я не получаю свой заголовок Set-cookie.

Вопрос

Как я могу иметь свой заголовок на веб-интерфейсе (Angular или почтальоне)

1 Ответ

0 голосов
/ 12 марта 2019

После нескольких часов поисков я нашел основную причину.

Мой фронтент работает на localhost: 4200 Мой бэкэнд работает на localhost: 8090

когда сервер отправляет установленный файл cookie, Google Chrome блокирует его, так как файл cookie устанавливается сторонним доменом.

его можно отключить в меню «Настройки»> «Дополнительные настройки»> «Конфиденциальность»> «Настройки контента»> «Блокировать сторонние файлы cookie и данные сайта»)

Работа вокруг

получить токен во внешнем интерфейсе в качестве тела ответа и установить его там с помощью бизнес-логики внешнего интерфейса (локальное хранилище или установить cookie)

...