Как включить CORS в Spring Boot и Angular - PullRequest
0 голосов
/ 26 мая 2020

Я включил CORS на моем весеннем загрузочном сервере следующим образом.

@RestController
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping("/api/v1")
public class EmployeeController {
    @Autowired
    private EmployeeRepository employeeRepository;

    @PostMapping("/employees")
    public Employee createEmployee(@Valid @RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }
}

При создании нового сотрудника я получаю сообщение об ошибке:

Access to XMLHttpRequest at 'http://localhost:8080/springboot-crud-rest/api/v1/employees' 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.

Я также пытался включить сервер -Боковой прокси в Angular приложениях CLI, которые были извлечены, но я не смог найти ни одного файла как webpack.config. js.

1 Ответ

1 голос
/ 26 мая 2020

В CORS изменения на стороне интерфейса не требуются. Бэкэнд должен правильно его настроить. Если у вас этот бэкэнд развернут в облаке, требуются некоторые настройки. В противном случае вы должны быть в порядке с подходом, который вы сделали

Просто поместите тот же CrossOrigin поверх @PostMapping, как показано ниже. И все должно быть хорошо.

@RestController
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping("/api/v1")
public class EmployeeController {
    @Autowired
    private EmployeeRepository employeeRepository;

    @CrossOrigin(origins = "http://localhost:4200")
    @PostMapping("/employees")
    public Employee createEmployee(@Valid @RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }
}

Кстати, не рекомендуется использовать эту аннотацию для каждого API. вместо этого настройте это в своем application.properties так, чтобы оно было применимо для всех API.

...