Я хочу отправить запрос POST из моего углового приложения на мой сервер (написанный с использованием Spring-Boot). Запрос отклоняется сообщением "отсутствует заголовок cors‘ access-control-allow-origin ".
Я включил источник моего углового приложения "http://localhost:4200", как я сделал для других моих RestControllers (который работает). Единственное отличие, насколько я могу судить, состоит в том, что я обрабатываю POST-запросы в моем не работающем контроллере .
Контроллер
@RestController
@CrossOrigin(origins = "http://localhost:4200")
public class Controller {
@Autowired
private ReqRepository reqRepository;
@PostMapping("/reqs")
public Req saveReq (@Valid @RequestBody Req req) {
return reqRepository.save(req);
}
}
Репозиторий
@Repository
public interface ReqRepository extends JpaRepository<Req, Long> {
}
Угловой сервис
@Injectable()
export class ReqService {
private httpOptions = {
headers: new HttpHeaders({
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json'
})
};
constructor(private http: HttpClient) {}
sendReq(req: Req): Observable<Req> {
return this.http.post<Req>('http://localhost:8080/reqs', req, this.httpOptions);
}
}
Я думал, что разрешения источника будет достаточно, поэтому запрос возможен, но он заблокирован. Похоже, я что-то упустил для включения запросов POST.
Обновление
Я дополнительно проверил контроллер, и он работает для запросов GET.
Я просто изменяю метод, поэтому кажется, что проблема заключается в запросе POST.
Ниже приведен контроллер с конечной точкой теста GET вместо конечной точки POST
@RestController
@CrossOrigin(origins = "http://localhost:4200")
public class Controller {
@Autowired
private ReqRepository reqRepository;
@GetMapping("/reqs")
public Page<Req> testCall (Pageable pageable) {
System.out.println("Geeting request");
return reqRepository.findAll(pageable);
}
}