Не могу POST или PUT. Как изменить заголовок «Нет Access-Control-Allow-Origin», чтобы разрешить эти вызовы? - PullRequest
1 голос
/ 15 октября 2019

Я знаю, что есть множество ответов на этот вопрос. Но я просто не могу обойти это.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...