我有一个CORS问题。我正在使用spring boot和vue来制作一个全栈web。但是当我用axios从前面向Spring Security表单发出请求时,我得到了CORS错误。我确信我必须在我的授权类中做一些事情来发出请求,但是我不知道。
下面是我的代码:@EnableWebSecurity
@Configuration
public class WebAuthorization {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.formLogin()
.usernameParameter("email")
.passwordParameter("password")
.loginPage("/api/login");
http.logout().logoutUrl("/api/logout").deleteCookies("JSESSIONID");
return http.build();
}
我希望你可以用Vue把前面的请求变成我用spring security的表单。
您可以使用CorsConfigurationSource
Bean配置CORS。例如:
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("https://example.com"));
configuration.setAllowedMethods(Arrays.asList("GET","POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
如果你想允许跨域请求:
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.applyPermitDefaultValues();
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
查看Spring Security文档获取更多信息。