jus*_*oob 7 javascript java spring spring-boot angular
我有一个在端口 8888 上运行的 Spring Boot 后端应用程序和一个在 4200 上运行的 Angular 前端应用程序。
在我的 Spring Boot 应用程序中,我定义了以下 bean 来处理 CORS:
@Bean
public WebMvcConfigurer webMvcConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
Run Code Online (Sandbox Code Playgroud)
我的HttpSecurity配置如下所示:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf().disable()
// ... the rest of the config
}
Run Code Online (Sandbox Code Playgroud)
使用此配置一切正常,我可以从 Angular 应用程序成功调用我的 API。
但我想启用 CSRF,所以我将安全配置更改为以下内容:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
// ... the rest of the config
}
Run Code Online (Sandbox Code Playgroud)
我在HttpInterceptor我的 Angular 应用程序中添加了以下内容:
constructor(private tokenExtractor: HttpXsrfTokenExtractor) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = this.tokenExtractor.getToken();
if (token) {
req = req.clone({ setHeaders: { 'X-XSRF-TOKEN': token } });
}
return next.handle(req);
}
Run Code Online (Sandbox Code Playgroud)
问题tokenExtractor.getToken()始终是Returns null。
相应的请求和响应标头如下所示:
的XSRF-TOKEN响应存在Cookie。
我无法弄清楚问题是什么。
我试过HttpClientXsrfModule在我的 Angular 应用程序中导入,但它没有任何区别。
我真的很感激任何建议。
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |