1、为什么会出现跨域问题?
浏览器不允许通过ajax请求,来请求另一个网站的资源
2、SpringBoot如何通过Filter来解决跨域问题
2.1、写一个 CrosFilter 类来实现 javax.servlet.Filter 接口
public class CrosFilter implements javax.servlet.Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) servletResponse;
//*号表示对所有请求都允许跨域访问
res.addHeader("Access-Control-Allow-Origin", "*");
res.addHeader("Access-Control-Allow-Methods", "*");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
2.2、向Spring容器中添加一个 FilterRegistrationBean
写一个配置类
@Configuration
public classFilterRegistrationConfig{
/**
* 配置跨域访问的过滤器
* @return
*/
@Bean
public FilterRegistrationBean registerFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.addUrlPatterns("/*");
bean.setFilter(new CrosFilter());
return bean;
}
}
或者写在主启动类中
@SpringBootApplication
public class exampleApplication {
public static void main(String[] args) {
SpringApplication.run(exampleApplication.class, args);
}
/**
* 配置跨域访问的过滤器
* @return
*/
@Bean
public FilterRegistrationBean registerFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.addUrlPatterns("/*");
bean.setFilter(new CrosFilter());
return bean;
}
}
博客介绍了跨域问题产生的原因,即浏览器不允许通过ajax请求另一个网站的资源。还阐述了Spring Boot通过Filter解决跨域问题的方法,包括编写CrosFilter类实现接口,以及向Spring容器添加配置,可写配置类或在主启动类中实现。
2565

被折叠的 条评论
为什么被折叠?



