spring怎么共享cors
-
在Spring框架中,实现CORS(跨域资源共享)可以通过一些简单的配置来实现。以下是实现CORS的几种常用方法:
- 使用注解:在Spring的Controller层的方法上添加
@CrossOrigin注解。该注解可以指定允许跨域请求的源(origins)、方法(methods)、标头(headers)等。
@RestController public class MyController { @CrossOrigin(origins = "http://example.com") @GetMapping("/api/data") public ResponseEntity getData() { // 处理请求 return ResponseEntity.ok().body("Data"); } }上述示例中,指定了允许来自
http://example.com的跨域请求。- 配置类方式:创建一个配置类实现
WebMvcConfigurer接口,并重写addCorsMappings方法,来设置允许跨域请求的规则。
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://example.com") .allowedMethods("GET", "POST") .allowedHeaders("Origin", "Content-Type"); } }上述示例中,使用
addMapping方法指定了允许跨域请求的路径,allowedOrigins指定了允许的源,allowedMethods指定了允许的方法,allowedHeaders指定了允许的请求标头。- 全局配置方式:在Spring的配置文件(如application.properties或application.yml)中进行全局跨域配置。
在application.properties中添加如下配置:
spring.mvc.cors.allow-origin=http://example.com spring.mvc.cors.allowed-methods=GET, POST spring.mvc.cors.allowed-headers=Origin, Content-Type spring.mvc.cors.url-mapping=/api/**上述示例中,设置了允许跨域请求的源、方法、标头和URL路径。
以上是几种常用的方法来实现Spring共享CORS。根据具体情况选择适合你的方式来配置CORS,以实现在跨域请求中的数据共享。
1年前 - 使用注解:在Spring的Controller层的方法上添加
-
在Spring中实现CORS共享可以通过以下步骤完成:
- 添加CORS过滤器:首先,在Spring应用程序的配置文件中添加一个CORS过滤器。该过滤器将拦截所有传入的请求,并根据预定义的规则来处理跨域请求。可以使用Spring框架提供的CorsFilter类,该类位于org.springframework.web.filter包中。
@Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("GET"); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }以上代码将允许所有的来源(),所有的请求头(),以及仅限于GET方法。您可以根据自己的需求进行修改。
- 注解方式配置CORS:除了使用CORS过滤器外,还可以使用注解的方式来配置CORS共享。在Controller类或方法上添加@CrossOrigin注解,指定允许的来源,请求头和方法。
@RestController @CrossOrigin(origins = "http://example.com") public class MyController { @GetMapping("/data") public String getData() { // 处理业务逻辑 return "Data"; } }以上代码将允许来自"http://example.com"的跨域请求访问getData()方法。
- 配置全局CORS共享:如果您希望在整个Spring应用程序中启用CORS共享,可以通过配置类来实现。创建一个继承自WebMvcConfigurer的类,并覆盖addCorsMappings()方法,指定允许的来源,请求头和方法。
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://example.com") .allowedMethods("GET") .allowedHeaders("*"); } }以上代码将允许来自"http://example.com"的跨域请求访问所有的路径,并只允许GET方法。
-
配置CORS属性:除了指定允许的来源,请求头和方法外,还可以配置其他CORS属性。在CORS过滤器或注解中,可以设置以下属性:
allowCredentials:指定是否允许发送凭据(如Cookie或认证头)。exposedHeaders:指定响应中允许暴露的头部信息。maxAge:指定预检请求的有效期,以秒为单位。
config.setAllowCredentials(true); config.setExposedHeaders(Arrays.asList("X-Total-Count")); config.setMaxAge(3600);以上代码将允许发送凭据,暴露名为"X-Total-Count"的响应头,以及将预检请求的有效期设置为3600秒。
- 测试CORS共享:完成配置后,可以使用不同的来源(例如localhost)发送跨域请求,以测试是否能够成功访问资源。可以使用浏览器的开发者工具来查看响应头和响应状态码,如果看到预期的结果,则表示CORS共享已经成功配置。
总结:使用Spring实现CORS共享可以通过添加CORS过滤器,使用注解配置,配置全局CORS共享,配置CORS属性以及测试CORS共享来完成。这些方法都提供了灵活的方式来处理跨域请求,并允许您根据需要进行配置。
1年前 -
在Spring中共享CORS(跨域资源共享)配置有几种方法。CORS允许一个网页服务器与一个不同域名的网页进行数据交互。在Spring中,我们可以使用以下方法进行CORS配置。
- 注解配置方法:可以使用Spring4.2版本及以上的@EnableWebMvc注解或Spring Boot的@CrossOrigin注解来配置CORS。
@EnableWebMvc注解方法:
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://example.com") // 允许特定的域名进行访问 .allowedMethods("GET", "POST"); // 允许的请求方法 } }@CrossOrigin注解方法:
@RestController @RequestMapping("/api") @CrossOrigin(origins = "http://example.com") public class ApiController { @GetMapping("/data") public String getData() { // 处理请求并返回数据 } }- 配置类方法:创建一个实现了WebMvcConfigurer接口的配置类,并在其中重写addCorsMappings方法来配置CORS。
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://example.com") .allowedMethods("GET", "POST"); } }- 配置文件方法:在application.properties或application.yml中配置CORS。
application.properties方法:
spring.mvc.cors.mapping=/api/** spring.mvc.cors.allowed-origins=http://example.com spring.mvc.cors.allowed-methods=GET,POSTapplication.yml方法:
spring: mvc: cors: mapping: /api/** allowed-origins: http://example.com allowed-methods: GET,POST以上是在Spring中配置共享CORS的方法,根据实际情况选择其中一种方法即可。
1年前