Как заставить конечные точки принимать только uris с поддержкой @crossorigin в springboot при доступе с использованием шаблона resttemplate? Почему я не получаю ошибку cors?

У меня есть два проекта A и B. Оба работают на разных портах A(8080) B(8091). Я включил cors origin(http://localhost:8090) в проекте A для конечной точки «приветствие». Затем пытаемся вызвать конечную точку «приветствие» из проекта B, используя resttemplate. Поскольку перекрестное происхождение в проекте A и вызывающий проект B находятся на разных портах, я ожидаю ошибки, связанной с cors.

Но я получаю правильный ответ вместо ошибки.

Я пробовал в хроме и почтальоне, но тот же результат

//Project A
@RestController
public class GreetingController {
    @GetMapping("/greeting")
    @CrossOrigin(origins = "https://localhost:8090")
    public String greeting() {
        return "greetingsss";
    }
}

//Project B
@RestController
public class GreetingController {
    @GetMapping("/greeting1")
    public String greeting() {
        final String uri = "http://localhost:8080/greeting";
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(uri, String.class);
        return result;
    }
}

Ожидаемый результат: не удалось загрузить, нет контроля доступа, разрешающего источник

Фактический результат: приветссс

🤔 А знаете ли вы, что...
В Java существует механизм сборки мусора, который автоматически удаляет неиспользуемые объекты, что упрощает управление памятью.


112
1

Ответ:

Решено

CORS - это веб-вещь, навязанная пользовательскими агентами (браузерами). Следовательно, это не повлияет на связь между службами. Если вы хотите добиться этого для связи между службами, используйте Spring Security, где вы можете перехватывать URL-адреса, сопоставляя определенные шаблоны и проверяя множество вещей, включая исходный IP-адрес/домен (hasIpAddress). Здесь вы можете запретить доступ или разрешить доступ, используя различные правила.

В качестве альтернативы вы можете написать фильтр безопасности, чтобы запретить/разрешить определенные IP/домены.