相关疑难解决方法(0)

Angular 6不会将X-XSRF-TOKEN标头添加到http请求

我已经阅读关于SO 的文档和所有相关问题,但是Angular的XSRF机制仍然不适合我:我绝不能自动附加X-XSRF-TOKEN标头发出POST请求.

我有一个带登录表单的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 {
}
Run Code Online (Sandbox Code Playgroud)

然后,在Service的方法中,我正在进行以下http请求(this.http是一个实例HttpClient):

this.http
    .post<any>('api/login', {'_username': username, '_pass': password})
    .subscribe(/* handler here */);
Run Code Online (Sandbox Code Playgroud)

post请求永远不会发送X-XSRF-TOKEN标头.为什么?

csrf typescript x-xsrf-token angular angular6

16
推荐指数
5
解决办法
2万
查看次数

Angular 5无法从HttpXsrfTokenExtractor获取XSRF令牌

我正在尝试通过绝对URL向Spring(基本身份验证)安全的Rest API 发出POST请求。
阅读了Angular省略了将X-XSRF-TOKEN自动插入到请求标头中以获取绝对URL的信息后,我尝试实现HttpInterceptor来添加令牌。

在我的原始/ signin POST请求中,我创建了必要的授权:基本标头,以确保Spring对请求进行身份验证。
返回的响应标头包含预期的set-cookie令牌:

Set-Cookie:XSRF-TOKEN=4e4a087b-4184-43de-81b0-e37ef953d755; Path=/

但是,在我的自定义拦截器类中,当我尝试从注入的HttpXsrfTokenExtractor中获取下一个请求的令牌时,它返回null

这是我的拦截器类的代码:

import {Injectable, Inject} from '@angular/core';
import { Observable } from 'rxjs/Rx';
import {HttpInterceptor, HttpXsrfTokenExtractor, HttpRequest, HttpHandler, 
HttpEvent} from '@angular/common/http';


@Injectable()
export class HttpXsrfInterceptor implements HttpInterceptor {

   constructor(private tokenExtractor: HttpXsrfTokenExtractor) {}

   intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

     let requestMethod: string = req.method;
     requestMethod = requestMethod.toLowerCase();

     if (requestMethod && (requestMethod === 'post' || requestMethod === …
Run Code Online (Sandbox Code Playgroud)

csrf spring-security webpack-dev-server x-xsrf-token angular5

7
推荐指数
1
解决办法
3711
查看次数

SpringBoot-Angular 5-CSRF

Iam现在迷路了,需要一些帮助。

我有一个

  • 带有SpringSecurtiy 4.3的SpringBoot服务器。
  • Angular 5应用

并希望启用CSRF保护,因为默认情况下都应启用CSRF保护(文档说):不是!

在SpringBoot上,我需要添加以下安全配置:

http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
Run Code Online (Sandbox Code Playgroud)

在Angular上,我需要添加以下模块:

imports: [
    ...,
    HttpClientModule,
    HttpClientXsrfModule, //(!)
...
Run Code Online (Sandbox Code Playgroud)

服务器的底线是在每个响应中发送XRSF-TOKEN。

-但每个人都有不同。那是对的吗?我希望在客户端会话中也一样。

-这里的主要问题是Angular5仍未在其帖子调用中使用XRSF-TOKEN(例如)。它没有在请求中设置X-XSRF-TOKEN。

我在做什么错还是想念?

csrf csrf-protection spring-boot angular5

6
推荐指数
1
解决办法
3742
查看次数