Бекенд nodejs - express, passport.
Фронтенд ангуляр.
//Настроенные роуты для angular
app.use('/', express.static(path.join(__dirname, '/dist/practice/')));
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, '/dist/practice/index.html'));
});
app.use('/', router);
//Обработчик post запроса на сервере (Как во всех гуидах)
router.post('/login', (req, res, next) => {
passport.authenticate('local', {
successRedirect : '/profile',
failureRedirect : '/error',
failureFlash : true
})(req, res, next);
});
//Сервис который обрабатывает запросы с клиента (angular)
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'my-auth-token'
})
postData(user) {
return this.http.post('/login', user, httpOptions);
}
//Функция вызванная в компоненте
onSubmit(){
this.httpService.postData(JSON.stringify(this.user))
.subscribe(data=>{
console.log(data);
this.done=true;
},
error => console.log(error)
);
}
//Сама форма
<section class="login">
<div class="wrapper">
<form class="example-form" (ngSubmit)="onSubmit()" #userform="ngForm">
<h1>Зарегистрируйтесь сейчас</h1>
<mat-form-field class="example-full-width">
<input matInput [(ngModel)]="user.email" name="email" type="email" placeholder="Email">
<mat-error *ngIf="">
Email is <strong>required</strong>
</mat-error>
</mat-form-field>
<mat-form-field class="example-full-width">
<input matInput [(ngModel)]="user.password" name="password" type="password" placeholder="Password" >
</mat-form-field>
<div *ngIf="done">
<div>Получено от сервера:</div>
<div>Имя: {{receivedUser.email}}</div>
<div>Возраст: {{receivedUser.password}}</div>
</div>
<button mat-raised-button type="submit" color="primary">Регистрация</button>
</form>
<p class="lead">Уже зарегистрированы? <a href="#" (click)="openBottomSheet()">Войти</a></p>
</div>
</section>
На сервер поступают post запросы, обрабатываются, но возвращается ошибка, и редиректа по понятным причинам не происходит.
Ошибка происходит на клиенте в файле main.adeca9df8fe2d81d2855.js.
e {headers: t, status: 200, statusText: "OK", url: "http://localhost:3000/profile", ok: false, …}
Если раскрыть ошибку, то:
error: {error: SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttp…, text: "<!doctype html>↵<html lang="en">↵<head>↵
Так же само сообщение:
message: "Http failure during parsing for http://localhost:3000/profile"
Зачем он его парсит? Что сделать чтобы он не парсил файл, а переходи по ссылке?
PS: По */profile роутеры на ангуляр настроены.