Я пытаюсь включить заголовок с перекрестным происхождением, чтобы иметь доступ к службе из любого места (только в локальном 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.
Что я упустил? Что я должен включить и где?
Я добавил его в сам контроллер, а также попытался добавить его явно для GetMapping, но все равно ничего.
Вы тоже используете spring-security?
Похоже, это должно быть реализовано, см .: docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/… Вы пробовали использовать «/ **» в качестве аргумента в методе «addMapping»? Какое значение передается в «allowedOrigins» с вашей конфигурацией безопасности? Это точно источник, в котором размещен ваш "index.html"?
Георг Виттбергер понял суть. Спасибо, я напишу ответ на основе этого комментария




Вам нужно добавить аннотацию ниже либо к классу контроллера, либо к конкретному методу:
@CrossOrigin
По умолчанию он разрешает все источники, все заголовки, методы HTTP, указанные в аннотации @RequestMapping, и используется maxAge 30 минут.
Если вы хотите разрешить только http: // локальный: 8080 отправлять запросы между источниками
@CrossOrigin (origins = "http: // локальный: 8080")
Замените хост и порт соответственно.
Дополнительную информацию см. В приведенной ниже документации Spring:
Как указал Георг Виттбергер, проблема заключалась в отображении. Я использовал подстановочный знак *, что не подходит для путей.
Вместо этого: registry.addMapping ("*")
Я использовал это: registry.addMapping ("/ **"), и он работает нормально.
используйте
@crossoriginв вашем контроллере.