跨域问题解决

个人理解的跨域:
1.存在于B/S架构
2.前端请求后端
3.前端和被访问的服务不在同一个服务器上。比如前端部署在10.27.20.59
而后端部署在10.27.20.60,那么前端请求后端时候就会出现请求不了。当然这种项目是前后端分离的。
此时就需要解决这种问题——跨域。一般在后端处理即可,以下是两种个人常用的方式:

  • 注解方式
    在需要跨域访问的接口(方法)上加上注解,细粒度配置。springMVC的版本要在4.2或以上版本才支持@CrossOrigin。代码如下:
@CrossOrigin(origins = {"*"}, methods = {RequestMethod.GET})

其中@CrossOrigin中的2个参数:

origins : 允许可访问的域列表

maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。

  • 配置类方式
    全局控制跨域,代码如下:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //允许任何域名
        corsConfiguration.addAllowedOrigin("*");

        //允许任何头
        corsConfiguration.addAllowedHeader("*");

        //允许任何方法
        corsConfiguration.addAllowedMethod("*");
        return corsConfiguration;
    }
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        //注册
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章