Я работаю над одностраничным приложением в Angular 7, а для REST-сервера я использую Laravel 5.7.Проблема в том, когда я пытаюсь установить куки в ответ на запрос.
В Angular я отправляю запрос так:
login(username: string, password: string) {
this.httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }),
withCredentials: true
};
const body = this.postDataHelper.jsonToURLEncoded({username: username, password: password});
return this.http.post(serverUrl + 'login', body, this.httpOptions);
}
И в Laravel я отправляю ответ так:
if ($token = JWTAuth::attempt($credentials, $customClaims)) {
return response()->json(array('success' => true, 'token' => $token))->withCookie(cookie()->forever('cookie_name', 'cookie_value'));
}
Проблема в том, что я не могу получить Set-Куки в заголовке ответа в браузере.Когда я пытаюсь отправить запрос через почтальона или phpstorm, я получаю Set-Cookie в заголовке ответа.Так что проблема в Angular, я полагаю.
Кто-нибудь знает, как я могу манипулировать файлами cookie в заголовке ответа, используя Angular для внешнего интерфейса и Laravel для внутреннего интерфейса?
Заранее спасибо
ОБНОВЛЕНИЕ: В Mozilla работает, но в Chrome нет
Заголовок ответа в Почтальоне:
Server →nginx/1.15.0
Content-Type →application/json
Transfer-Encoding →chunked
Connection →keep-alive
Cache-Control →no-cache, private
Date →Mon, 17 Dec 2018 19:47:34 GMT
Access-Control-Allow-Origin →http://localhost:4200
Access-Control-Allow-Methods →GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers →X-Requested-With, Content-Type, X-Token-Auth, Authorization, X-HTTP-Method-Override, Accept
Access-Control-Allow-Credentials →true
X-RateLimit-Limit →60
X-RateLimit-Remaining →57
Set-Cookie →cookie_name=cookie_value; expires=Sat, 16-Dec-2023 19:47:34 GMT; Max-Age=157680000; path=/; httponly
Как вы можете видеть в конце, я получаю Set-Cookie в Почтальоне, в Firefox тоже, но я могу получить этот параметр в Chrome.