Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет.
Для 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.
Как можно это исправить? Спасибо.
Не в сети
Не знаю на сколько поможет, я это правда для ajax использовал.
это в хед страницы
<meta name="csrf-token" content="{{ csrf_token() }}">
а непосредственно для ajax
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Не в сети