Настройки Spring CORS

Я пытаюсь включить заголовок с перекрестным происхождением, чтобы иметь доступ к службе из любого места (только в локальном env), но я не могу.

@Configuration
@RequiredArgsConstructor
public class CrossOriginConfig implements WebMvcConfigurer {
    private final SecurityConfiguration securityConfiguration;

    @Override
    public void addCorsMappings(CorsRegistry registry) { 
    registry.addMapping("*").allowedOrigins(securityConfiguration.getCrossOrginFilter());
    }
}

Я создал собственный index.html с вызовом ajax, и он не работает из-за отсутствия заголовка Allow-Cross-Origin и его происхождения из другого источника.

Простые контроллеры Spring Boot 2.0 используются с аннотацией @RestController и простым @GetMapping.

Что я упустил? Что я должен включить и где?

используйте @crossorigin в вашем контроллере.

swetansh kumar 17.04.2018 14:40

Я добавил его в сам контроллер, а также попытался добавить его явно для GetMapping, но все равно ничего.

Guigreg 17.04.2018 14:51

Вы тоже используете spring-security?

TwiN 17.04.2018 15:51

Похоже, это должно быть реализовано, см .: docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/… Вы пробовали использовать «/ **» в качестве аргумента в методе «addMapping»? Какое значение передается в «allowedOrigins» с вашей конфигурацией безопасности? Это точно источник, в котором размещен ваш "index.html"?

Georg Wittberger 17.04.2018 19:28

Георг Виттбергер понял суть. Спасибо, я напишу ответ на основе этого комментария

Guigreg 18.04.2018 17:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
5
1 333
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно добавить аннотацию ниже либо к классу контроллера, либо к конкретному методу:

@CrossOrigin

По умолчанию он разрешает все источники, все заголовки, методы HTTP, указанные в аннотации @RequestMapping, и используется maxAge 30 минут.

Если вы хотите разрешить только http: // локальный: 8080 отправлять запросы между источниками

@CrossOrigin (origins = "http: // локальный: 8080")

Замените хост и порт соответственно.

Дополнительную информацию см. В приведенной ниже документации Spring:

https://spring.io/guides/gs/rest-service-cors/

Ответ принят как подходящий

Как указал Георг Виттбергер, проблема заключалась в отображении. Я использовал подстановочный знак *, что не подходит для путей.

Вместо этого: registry.addMapping ("*")

Я использовал это: registry.addMapping ("/ **"), и он работает нормально.

Другие вопросы по теме