reactjs - 为什么我在 Spring Boot 中从服务器端配置并做出反应时出现 CORS 错误?
问题描述
在我的服务器端应用程序中,我已经像这样全局启用了 CORS。
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD", "PATCH")
.allowedHeaders("*")
.allowedOrigins("*");
}
};
}
我的客户端应用程序在 react 和 useEffect 挂钩中运行,我正在调用这样的后端 API。
useEffect(() => {
async function fetchData() {
const dataArray = await axios({
url: "http://localhost:9001/getAllCompany/7",
method: "GET",
headers: { 'Authorization': "Bearer " + authctx.token },
});
setCompany(dataArray.data);
return dataArray;
}
fetchData();
}, [authctx.token]);
虽然我启用了 cors,但 API 调用不起作用,网络调用显示如下
我该如何解决这个问题?
解决方案
在处理 Spring Security 时,有一些情况。此时我们必须添加 http.cors(); 在安全配置类中。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors();
http.csrf().disable()
.authorizeRequests().antMatchers("/user").hasRole("USER")
.antMatchers("/admin").hasAnyRole("ADMIN")
.antMatchers("/company/login", "/register","/subscribe/{userId}", "/addDataRequest/{userId}").permitAll().anyRequest().authenticated()
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).
and().addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
}
这对我有用。
推荐阅读
- sql - SQL - 从不同的数据库中动态选择信息到变量中
- css - 如何在blogspot的中心对齐列
- node.js - 如何监控 NPM 包许可类型的变化?
- android - Android API 21 中的 Webview 为空白/白色
- python - 网页抓取文本返回 0
- css - 获取 Bootstrap 5 网格行以垂直跨越其整个内容
- javascript - 一个函数可以只属于它声明的块作用域吗?
- javascript - OnChange 后反应表单字段更新更新
- reactjs - 我的默认道具有一个带有数据集的对象,我该如何设置数据?
- api - 如何通过rest api获取Bamboo中的linkedrepository信息?