Я создаю простое веб-приложение с angular и весенней загрузкой, и я совершенно новичок в обеих этих платформах. Я пытаюсь сделать http GET запрос с angular HttpClient, но у меня возникает ошибка cors, подобная этой:
Access to XMLHttpRequest at
'http://127.0.0.1:8080/api/employees/all' from origin
'http://127.0.0.1:4200' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
Я использую angular код, подобный этому:
this.http.get('http://127.0.0.1:8080/api/employees/all')
.subscribe(data => {
console.log(JSON.stringify(data));
});
но когда я начал сталкиваться с этой ошибкой, я изменил ее на:
private httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
this.httpOptions.headers.set('Authorization', 'Basic admin:admin123');
this.httpOptions.headers.set('Access-Control-Allow-Origin', '*');
this.httpOptions.headers.set('Access-Control-Allow-Method', 'GET, PUT, POST, DELETE, OPTIONS');
this.httpOptions.headers.set('Access-Control-Allow-Headers', 'Origin, Content-Type, X-Auth-Token');
this.http.get('http://127.0.0.1:8080/api/employees/all')
.subscribe(data => {
console.log(JSON.stringify(data));
});
Однако это никак не повлияло. Я нашел несколько постов с похожими проблемами, в которых люди решили свою проблему, добавив аннотацию @CrossOrigin в код spring java, поэтому я также попробовал это:
@CrossOrigin
@GetMapping(path = "/employees/all") // class @RequestMapping is "/api"
public @ResponseBody Iterable<Employee> getAllEmployees() {
System.out.println("endpoint reached");
return employeeRepository.findAll();
}
, но это тоже не работает. Я продолжаю получать ту же ошибку. Я думаю, что я не совсем понимаю, откуда возникает проблема. Это проблема на стороне сервера или на стороне клиента? Также, как я могу это исправить?
Я ценю любую помощь в решении этой проблемы. Заранее спасибо.