#spring-boot #cors
#весенняя загрузка #cors
Вопрос:
У меня есть сервер Spring Boot rest api, и я пытаюсь подключиться к нему через Vue.js приложение
Вот как я настроил свою безопасность Spring Boot
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.
.....
.cors()
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("/**"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("authorization", "content-type", "x-auth-token"));
configuration.setExposedHeaders(Arrays.asList("x-auth-token"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
Когда я пытаюсь получить доступ к токену авторизации от клиента, я получаю ошибку 403 в запросе ПАРАМЕТРОВ с этой ошибкой
Access to XMLHttpRequest at 'http://localhost:8081/oauth/token' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я не знаю, что еще мне следует настроить
Комментарии:
1. Проблема не в вашей конфигурации CORS. Проблема в том, что ваш сервер отвечает 403 на запросы параметров на
http://localhost:8081/oauth/token
. Вам нужно настроить этот сервер так, чтобы вместо ответа на запрос ПАРАМЕТРОВ для этого URL-адреса было 200 OK.
Ответ №1:
Вы определенно должны иметь "*"
вместо "/**"
в setAllowedOrigins
там.
Также правильным способом настройки CORS AFAIK было бы следующее:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")
.allowedHeaders("authorization", "content-type", "x-auth-token")
.exposedHeaders("x-auth-token");
}
}
Смотрите также CorsRegistration javadoc и Настройка CORS в руководстве по загрузке Spring