使用 Spring Boot、Spring Security 和 React 的 CORS 错误
CORS errors using Spring Boot, Spring Security and React
早上好。
过去两天我一直在与这个问题作斗争,所以我决定post一个关于它的问题。
基本上我有一个 Spring Boot 项目,它通过 React JS 前端执行基本的 CRUD 操作。
在我向项目添加 Spring 安全性之前,一切似乎都运行良好。从那时起,每当我从前端发出请求(使用 axios)时,我都会收到以下错误:
Access to XMLHttpRequest at 'http://localhost:8080/calciatore/list' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
在实施 Spring 安全性之前,仅在我的后端控制器中使用 @CrossOrigin(origins = "*")
一切都运行良好,但现在我总是会收到该错误,即使 URL 配置为不通过 Spring 安全登录保护。
与此同时,我从 Postman 发出任何请求(POST 用于登录或 GET 用于数据获取)都没有问题。
我尝试在整个互联网上寻找解决方案,但仍然没有找到。
如果您需要我展示部分代码,请询问。
提前致谢。
尝试使用如下代码所示的全局 CORS 配置,以允许所有端点使用 CORS。
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Component
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/**")
.allowedMethods(CorsConfiguration.ALL)
.allowedHeaders(CorsConfiguration.ALL)
.allowedOriginPatterns(CorsConfiguration.ALL);
}
};
}
}
自从 spring 启动 2.4 后,您应该使用 allowedOriginPatterns
而不是 allowedOrigins
。此外,您不能将通配符“*”与 credentials : true
一起使用
早上好。
过去两天我一直在与这个问题作斗争,所以我决定post一个关于它的问题。
基本上我有一个 Spring Boot 项目,它通过 React JS 前端执行基本的 CRUD 操作。 在我向项目添加 Spring 安全性之前,一切似乎都运行良好。从那时起,每当我从前端发出请求(使用 axios)时,我都会收到以下错误:
Access to XMLHttpRequest at 'http://localhost:8080/calciatore/list' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
在实施 Spring 安全性之前,仅在我的后端控制器中使用 @CrossOrigin(origins = "*")
一切都运行良好,但现在我总是会收到该错误,即使 URL 配置为不通过 Spring 安全登录保护。
与此同时,我从 Postman 发出任何请求(POST 用于登录或 GET 用于数据获取)都没有问题。
我尝试在整个互联网上寻找解决方案,但仍然没有找到。
如果您需要我展示部分代码,请询问。
提前致谢。
尝试使用如下代码所示的全局 CORS 配置,以允许所有端点使用 CORS。
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Component
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/**")
.allowedMethods(CorsConfiguration.ALL)
.allowedHeaders(CorsConfiguration.ALL)
.allowedOriginPatterns(CorsConfiguration.ALL);
}
};
}
}
自从 spring 启动 2.4 后,您应该使用 allowedOriginPatterns
而不是 allowedOrigins
。此外,您不能将通配符“*”与 credentials : true