#angular #spring-boot #cors #jhipster
#angular #spring-boot #cors #jhipster
Вопрос:
У меня есть приложение angular, которое подключается к моему приложению spring boot, которое я сгенерировал с помощью jhipster. Когда я отправляю post-запрос, я получаю эту ошибку:
Access to XMLHttpRequest at 'http://localhost:8081/api/materials-add' from origin 'http://localhost:4200' 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.
- Я попытался активировать Cors в своем Application.dev.yml, а затем начать с профиля разработчика, но это не сработало.
- Я попытался поместить этот метод в свой класс конфигурации:
@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**").allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"); }
Но по-прежнему безуспешно.
3.
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = jHipsterProperties.getCors();
if (config.getAllowedOrigins() != null amp;amp; !config.getAllowedOrigins().isEmpty()) {
log.debug("Registering CORS filter");
source.registerCorsConfiguration("/api/**", config);
source.registerCorsConfiguration("/management/**", config);
source.registerCorsConfiguration("/v2/api-docs", config);
source.registerCorsConfiguration("http://localhost:4200/**",config);
}
return new CorsFilter(source);
}
Это был код, который уже существовал, я просто добавил последнюю строку с localhost: 4200. Но все равно не повезло. Может ли кто-нибудь мне помочь или дать мне совет, что я могу попробовать дальше?
Ошибка Intellij:
2020-12-25 20:17:47.229 WARN 38287 --- [ XNIO-1 task-3] o.z.problem.spring.common.AdviceTraits : Unauthorized: Full authentication is required to access this resource
2020-12-25 20:17:47.231 WARN 38287 --- [ XNIO-1 task-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.security.authentication.InsufficientAuthenticationException: Full authentication is required to access this resource]
Но я авторизовался через свой шлюз, и мой шлюз и мой микросервис регистрируются в одном реестре, поэтому я должен быть авторизован. эта ошибка связана с CORS?
Я только что прочитал эту часть в своем приложении.dev.yml: CORS по умолчанию отключен для микросервисов, так как вы должны получить к ним доступ через шлюз.
В моем шлюзе я уже разрешил cors через application.dev.yml следующим образом:
cors:
allowed-origins: '*'
allowed-methods: '*'
allowed-headers: '*'
exposed-headers: 'Authorization,Link,X-Total-Count'
allow-credentials: true
max-age: 1800
Ответ №1:
Я считаю, что ваша проблема в том, что
разрешенные исходные данные: ‘*’ и разрешить учетные данные: true
нельзя использовать вместе, так как это было бы опасно небезопасно.
Смотрите Здесь для получения более подробной информации https://portswigger.net/web-security/cors/access-control-allow-origin
Удалите разрешающие учетные данные или укажите http://localhost:8081 etc вместо подстановочного знака allowed-origins