- 一、前言说明
- 二、服务端解决跨域问题
- 2.1、Filter方式设置response header
- 2.2、使用@CrossOrigin注解
- 2.3、实现webMvcConfigurer接口
在实际软件开发应用中,经常会遇到跨域问题。那跨域具体是什么样的问题?浏览器为了页面安全,设置了同源策略:即本域脚本只能读写本域内的资源,而无法访问其它域的资源。所谓同源就是“协议+域名+端口”三者相同,当在一个站点内访问非该同源的资源,浏览器就会报跨域错误。
总而言之,浏览器限制本域脚本不能执行其他网站的脚本。所以,应用到实际场景,本域脚本需要执行其他域的接口,那应该怎么解决实现?
目前,对于跨域问题,前后端都有相应的处理方案,常见的如下所示:
接下来,针对跨域问题,服务端能采取的方案如下介绍。
2.1、Filter方式设置response header可以创建一个filter的类去设置这个跨域问题。最常用的是@WebFilter注解方法。
@WebFilter(urlPatterns = "
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
//配置跨域的信息 例如
private String[] allowedOrigins;
@Autowired
private UserInfoServiceImpl userInfoService;
@Override
public void addCorsMappings(CorsRegistry registry) {
// 对跨域生效的路径
registry.addMapping("
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor(userInfoService))
.addPathPatterns("private*")
.excludePathPatterns("/login.html","/js
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//对应loginController类的public ModelAndView login(ModelAndView mode)方法功能
// registry.addViewController("/login.html").setViewName("login");
//这是任何url访问都跳到对应的登录页面
registry.addViewController("/loginTest.html").setViewName("login");
}
}
WebMvcConfigurer接口,不仅仅可以设置跨域问题,还有其他方法功能,后续继续研究…



