CORS是指跨域资源共享,它允许浏览器向不同源(domain,port,protocol)发出XMLHttpRequest请求。默认情况下,Java Spring Boot会禁用CORS,以防止跨站点攻击。在使用Angular 12与Java Spring Boot时,你可能会遇到CORS错误。为了解决这个问题,你需要允许特定源访问你的资源。请按照以下步骤进行操作:
@Configuration public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.setAllowedOrigins(Arrays.asList("*"));
config.setAllowedHeaders(Arrays.asList("*"));
config.setAllowedMethods(Arrays.asList("OPTIONS", "HEAD", "GET", "POST", "PUT", "DELETE"));
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
此代码将允许来自所有源的访问。
@Injectable() export class ApiService {
constructor(private http: HttpClient) {}
public getAllUsers(): Observable {
const headers = new HttpHeaders().set('Content-Type', 'application/json');
const options = { headers: headers, withCredentials: true };
return this.http.get('http://localhost:8080/users', options);
}
}
此代码将向Java Spring Boot后端应用程序发送请求,并在请求中包括凭据。
这两个步骤都完成后,你应该能够通过Angular 12访问Java Spring Boot后端应用程序中的资源,同时避免CORS错误。