response-admin Нет 'Контроль доступа-Разрешить-Происхождение' - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь использовать react-admin в своем проекте, который требует Content-Range.

Так что на моем сервере я написал:

@GetMapping("admin/user")
    ResponseEntity<List<User> > getAll()
    {
        System.out.println(new Date());;

        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.set("Content-Range",
                "posts 0-"+userRepository.findAll().size()+"/"+userRepository.findAll().size());

        return ResponseEntity.ok()
                .headers(responseHeaders)
                .body(userRepository.findAll());
    }

Также настроил CORS:

@Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry
                        .addMapping("/**")
                        .allowedOrigins("http://localhost:3000");
                registry
                        .addMapping("/admin*")
                        .allowedOrigins("http://localhost:3001")
                        .exposedHeaders("Content-Range");

            }
        };
    }

Ошибка: Доступ к выборке в 'http://localhost: 8080 / admin / user? Filter =% 7B% 7D & range =% 5B0% 2C9% 5D & sort =% 5B% 22id% 22% 2C% 22ASC% 22% 5D 'от источника' http://localhost: 3001 'заблокировано политикой CORS: в заголовке «Access-Control-Allow-Origin» нет заголовка запрашиваемый ресурс. Если непрозрачный ответ соответствует вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Почему я получаю эту ошибку?

Работает нормально на почтальона:

enter image description here

enter image description here

Позже я даже добавил: responseHeaders.set("Origin", "http://localhost:3001");

Все еще нет надежды.

Как это можно решить?

1 Ответ

1 голос
/ 24 января 2020

Это кросс-ошибка, вызываемая браузером.

Вы можете настроить свой прокси-сервер с помощью пакета реагирующего приложения. json файл просто добавить

"proxy" : "http://localhost:8080"  

Теперь вам просто нужно указать относительную путь к вашему API-запросу

 Example : '/admin/user/'  // your app going to make request to http://localhost:8080/admin/user 

А также убедитесь, что вы разрешаете правый URL вашего сервера

                  registry
                    .addMapping("/**")
                    .allowedOrigins("http://localhost:3000");   // make sure this is right url of your frontend 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...