react管理员没有“访问控制允许来源”

IT技术 reactjs spring spring-boot cors react-admin
2021-05-07 05:58:21

我正在尝试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 的情况下获取资源。

为什么我收到这个错误?

邮递员工作正常:

在此处输入图片说明

在此处输入图片说明

后来我什至补充说: responseHeaders.set("Origin", "http://localhost:3001");

还是没有希望。

如何解决?

1个回答

这是浏览器导致的 cro 错误。

您可以使用您的react应用程序 package.json 文件配置您的代理,只需添加

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

现在您只需要提供 api 请求的相对路径

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

并确保您允许后端的正确网址

                  registry
                    .addMapping("/**")
                    .allowedOrigins("http://localhost:3000");   // make sure this is right url of your frontend