Angular 7.3.9 - Не удалось найти JSESSIONID в файлах cookie приложения - PullRequest
0 голосов
/ 01 июня 2019

У меня есть интерфейс, написанный на Angular 7.3.9, который работает на localhost:4200, а сервер на Tomcat на localhost:8086. Я сделал запрос на вход, но Set-Cookie не был отправлен в заголовке ответа.

Заголовок запроса:

! Provisional headers are shown
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
Origin: http://localhost:4200
Referer: http://localhost:4200/welcome
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

Заголовок ответа:

Access-Control-Allow-Methods: POST
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=utf-8
Date: Sat, 01 Jun 2019 09:34:28 GMT
Transfer-Encoding: chunked

Я не мог видеть HttpOnly JSESSIONID в приложении / куки, это должно быть так: JSESSIONID=0D3A40EBDF83F0202DAA2315DD6951FC; Path=/; HttpOnly

Я пытался собрать приложение, запустить его на сервере tomcat и получить желаемый ответ.

Заголовок запроса:

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,vi;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 60
Content-Type: application/x-www-form-urlencoded
Host: localhost:8086
Origin: http://localhost:8086
Pragma: no-cache
Referer: http://localhost:8086/welcome
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

Заголовок ответа:

Access-Control-Allow-Methods: POST
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=utf-8
Date: Sat, 01 Jun 2019 08:56:47 GMT
Set-Cookie: JSESSIONID=0D3A40EBDF83F0202DAA2315DD6951FC; Path=/; HttpOnly
Transfer-Encoding: chunked

это мой код запроса:

this.authService.login(user)
  .pipe(first())
  .subscribe(
    res => {
      console.log(res);
    },
    error => {
      console.error(error);
    }
  );

auth.service.ts

login(data) {
    data["flag"] = 'new_login';
    let url = 'http://localhost:8086/api/user';
    let body = this.helper.toBodyString(data);
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type': 'application/x-www-form-urlencoded',
      })
    }
    return this.http.post<any>(url, body, httpOptions)
      .pipe(
        map(user => {
          if (user && user.msg === '') {
            localStorage.setItem('currentUser', JSON.stringify(user));
            this.currentUserSubject.next(user);
          }
          console.log(user);

          return user;
        }),
        catchError(this.helper.handleError)
      );
  }

JSESSIONID

...