Я знаю, что есть множество ответов на этот вопрос. Но я просто не могу обойти это.
Access to XMLHttpRequest at 'http://localhost:8080/user/2' from origin 'http://localhost:3000' 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.
Мои маршруты get и delete работают нормально, но вызовы post и put блокируют это из-за ошибки CORS.
Как и где я могу редактироватьмои конфиги в моем приложении activjs, чтобы заставить это работать?
Я думал, что уже учел эту проблему в своем контроллере Java. Я сказал Java-серверу localhost: 3000 - это хорошо. Нужно ли что-то в моем интерфейсе для редактирования заголовка?
@CrossOrigin(origins = { "http://localhost:3000", "http://localhost:4200" })
@RestController
public class UserController {
@Autowired
private UserRepository repo;
@GetMapping("/user")
public Iterable<User> getAllUsers() {
return repo.findAll();
}
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
Optional<User> user = repo.findById(id);
if (id == -1) {
return new User();
}
if (user == null) {
return null;
}
return user.get();
}
@DeleteMapping("/user/{id}")
public User deleteUser(@PathVariable Long id) {
Optional<User> user = repo.findById(id);
if (user == null) {
return null;
}
repo.delete(user.get());
return user.get();
}
@PutMapping("user/{id}")
public User updateUser(@RequestBody User user) {
User updatedUser = repo.save(user);
return updatedUser;
}
@PostMapping("/user")
public User addUser(@RequestBody User user) {
if (user == null) {
return null;
}
User createdUser = repo.save(user);
return createdUser;
}
}
Вот мой сервисный код js. Я использую Axios для вызова внутренних маршрутов БД
import axios from 'axios'
const USER_API_URL = 'http://localhost:8080'
class UserDataService {
retrieveAllUsers() {
return axios.get(`${USER_API_URL}/user`);
}
deleteUser(id) {
console.log('excuted user deletion')
return axios.delete(`${USER_API_URL}/user/${id}`);
}
getUser(id) {
console.log('excuted user get')
return axios.get(`${USER_API_URL}/user/${id}`);
}
createUser(user) {
console.log('executed user create')
return axios.post(`${USER_API_URL}/user)`, user);
}
updateUser(user) {
console.log('executed user update')
return axios.put(`${USER_API_URL}/user/${user.id}`, user);
}
}
export default new UserDataService()