半亩花草 发表于 2024-8-2 10:49:06

SpringBoot怎样实现简单的跨域配置

在SpringBoot中实现简单的跨域配置,主要通过全局CORS配置来完成。这通常涉及到实现WebMvcConfigurer接口并覆盖addCorsMappings方法。以下是一个简单的示例,展示了怎样在SpringBoot应用中配置CORS策略以允许跨域哀求。
首先,需要创建一个配置类,该类实现WebMvcConfigurer接口。然后,在addCorsMappings方法中定义你的CORS策略。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
      // 添加一个映射,该映射应用于所有路径
      registry.addMapping("/**")
                // 允许来自哪些源的跨域请求
                .allowedOrigins("http://example.com", "https://www.example.org")
                // 允许哪些HTTP方法,例如GET, POST, PUT, DELETE, OPTIONS等
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                // 允许哪些头部信息
                .allowedHeaders("*")
                // 是否允许发送Cookies,设置为true时,前端需要在AJAX请求中设置xhrFields: {withCredentials: true}
                .allowCredentials(true)
                // 设置暴露给前端JS代码的头部信息
                .exposedHeaders("Authorization", "X-Requested-With", "Accept", "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers");

      // 如果你需要更精细的控制,可以为不同的路径设置不同的CORS策略
      // registry.addMapping("/api/**").allowedOrigins("http://api.example.com");
    }
}
在这个例子中,.addMapping("/**")表现CORS策略将应用于所有的哀求路径。.allowedOrigins()方法用于指定哪些源(即哪些域名或IP地点)可以发起跨域哀求。你可以根据需要添加多个源。
.allowedMethods()方法指定了允许的HTTP方法,这里包含了常用的GET、POST、PUT、DELETE和OPTIONS方法。.allowedHeaders("*")表现允许任何头部信息,但出于安全考虑,你大概盼望明确指定允许的头部。
.allowCredentials(true)是一个紧张的设置,它允许前端在AJAX哀求中发送Cookies。但是,当设置为true时,.allowedOrigins()不能包含通配符*,你需要明确指定允许的源。
.exposedHeaders()方法用于设置哪些头部信息应该被暴露给前端JS代码。这通常用于需要前端读取某些响应头信息的场景。
通过以上配置,你的SpringBoot应用就能够处理惩罚来自指定源的跨域哀求了。需要注意的是,CORS策略是欣赏器安全策略的一部分,它只在欣赏器端生效,后端服务之间调用不受CORS策略的限制。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SpringBoot怎样实现简单的跨域配置