Я прочитал документы и все связанные с этим вопросы по SO, но механизм Angular XSRF все еще не работает для меня: никоим образом я не могу сделать запрос POST с добавленным заголовком X-XSRF-TOKEN автоматически.
У меня есть приложение Angular 6 с формой входа.
Он является частью веб-сайта Symfony (PHP 7.1), и страница приложения Angular, когда она обслуживается Symfony, отправляет правильный файл cookie (XSRF-TOKEN
):
Мой app.module.ts содержит нужные модули:
// other imports...
import {HttpClientModule, HttpClientXsrfModule} from "@angular/common/http";
// ...
@NgModule({
declarations: [
// ...
],
imports: [
NgbModule.forRoot(),
BrowserModule,
// ...
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'XSRF-TOKEN',
headerName: 'X-CSRF-TOKEN'
}),
// other imports
],
providers: [],
entryComponents: [WarningDialog],
bootstrap: [AppComponent]
})
export class AppModule {
}
Затем внутри метода Service я выполняю следующий http-запрос (this.http
является экземпляром HttpClient
):
this.http
.post<any>('api/login', {'_username': username, '_pass': password})
.subscribe(/* handler here */);
Почтовый запрос никогда не отправляет заголовок X-XSRF-TOKEN. Почему?