zoukankan      html  css  js  c++  java
  • SpringBoot利用Filter来解决跨域问题

    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;
        }
    }
  • 相关阅读:
    NSString的几种常用方法
    ios页面间传递参数四种方式
    ios category类别的使用
    iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
    IOS导航栏的使用方法
    报错:Expected one result (or null) to be returned by selectOne(), but found: 6
    Spring小知识
    spring动态代理
    登录和注册功能思路
    sql语句实例练习
  • 原文地址:https://www.cnblogs.com/houchen/p/14151278.html
Copyright © 2011-2022 走看看