У меня есть интерфейс, написанный на 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