Laravel Как передать token csrf из api laravel в frontend Angular 5

sharomet

Новичок
Всем привет.
Для backend я использую - laravel
Для frontend - angular 5
База данных - mongodb.
Я столкнулся с такой проблемой:
Ни как не могу передать токен csrf в angular.
Нашел статью в которой сказано что token нужно передавать через router
Код:
Route::get('/api/csrf', function() {
  return response()->json(Session::token());
});
В angular нужно отлавливать этот запрос и отправлять в заголовках обратно вместе с post запросом

Код:
constructor(private http: HttpClient) {
 this.getToken();//Вызываем метод для получения token
 }
 getToken() {
 return this.http.get(this.tokenUrl).subscribe(res => {
  this.token = res; //помещяем полученый token в переиенную token
 });
 }
public addUser(user: User) {
 let headers: HttpHeaders = new HttpHeaders();
 headers = headers.append('Content-Type', 'application/json');
 headers = headers.append('XSRF-TOKEN', this.token);//Помещяем token в заголовок
 return this.http.post<User>(this.apiAddUser, user, {headers: headers}).pipe(
 catchError(this.handleError)
 );
 }
Я думаю что это не правильно.
В итоге возвращяется ошибка с неправельным token.

OST http://localhost:8000/api/user 419 (unknown status)
core.js:1598 ERROR HttpErrorResponse {headers: HttpHeaders, status: 419, statusText: "unknown status", url: "http://localhost:8000/api/user", ok: false, …}


Как можно это исправить? Спасибо.
 
Последнее редактирование:

sharomet

Новичок
@Andkorol, - Спасибо.
@Adelf, - Я уже читал эту информацию. там говорится о том что файлы куки отправляются для удобства некоторых фреймворков типа ангуляр у которого есть метод который автоматически подхватывает token из куки и отпраляет их в header.
Код:
imports: [
    BrowserModule,
    HttpClientModule,
    HttpClientXsrfModule.withOptions({// Вот этот метод. Но он не работает. Ничего не происходит
      cookieName: 'XSRF-TOKEN',
      headerName: 'X-XSRF-TOKEN',
    }),
    FormsModule,
    ReactiveFormsModule
  ],
 

fixxxer

К.О.
Партнер клуба
Ну смотря что делать. Может у него mixed рендеринг, и на ангуляре только небольшие компоненты. Хотя конечно использовать Angular (не первый) для этого крайне странно.
 

sharomet

Новичок
Проблема была в том что angular и laravel были на разных портах) Я присадил их на один порт и всё заработало)
Спасибо.
 
Сверху