spring怎么共享cors

worktile 其他 25

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Spring框架中,实现CORS(跨域资源共享)可以通过一些简单的配置来实现。以下是实现CORS的几种常用方法:

    1. 使用注解:在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的跨域请求。

    1. 配置类方式:创建一个配置类实现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指定了允许的请求标头。

    1. 全局配置方式:在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年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Spring中实现CORS共享可以通过以下步骤完成:

    1. 添加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方法。您可以根据自己的需求进行修改。

    1. 注解方式配置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()方法。

    1. 配置全局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方法。

    1. 配置CORS属性:除了指定允许的来源,请求头和方法外,还可以配置其他CORS属性。在CORS过滤器或注解中,可以设置以下属性:

      • allowCredentials:指定是否允许发送凭据(如Cookie或认证头)。
      • exposedHeaders:指定响应中允许暴露的头部信息。
      • maxAge:指定预检请求的有效期,以秒为单位。
    config.setAllowCredentials(true);
    config.setExposedHeaders(Arrays.asList("X-Total-Count"));
    config.setMaxAge(3600);
    

    以上代码将允许发送凭据,暴露名为"X-Total-Count"的响应头,以及将预检请求的有效期设置为3600秒。

    1. 测试CORS共享:完成配置后,可以使用不同的来源(例如localhost)发送跨域请求,以测试是否能够成功访问资源。可以使用浏览器的开发者工具来查看响应头和响应状态码,如果看到预期的结果,则表示CORS共享已经成功配置。

    总结:使用Spring实现CORS共享可以通过添加CORS过滤器,使用注解配置,配置全局CORS共享,配置CORS属性以及测试CORS共享来完成。这些方法都提供了灵活的方式来处理跨域请求,并允许您根据需要进行配置。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Spring中共享CORS(跨域资源共享)配置有几种方法。CORS允许一个网页服务器与一个不同域名的网页进行数据交互。在Spring中,我们可以使用以下方法进行CORS配置。

    1. 注解配置方法:可以使用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() {
            // 处理请求并返回数据
        }
    }
    
    1. 配置类方法:创建一个实现了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");
        }
    }
    
    1. 配置文件方法:在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,POST
    

    application.yml方法:

    spring:
      mvc:
        cors:
          mapping: /api/**
          allowed-origins: http://example.com
          allowed-methods: GET,POST
    

    以上是在Spring中配置共享CORS的方法,根据实际情况选择其中一种方法即可。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部