zoukankan      html  css  js  c++  java
  • Java工具类- 跨域工具类

    原本Spring MVC项目添加跨域:

    在web.xml文件中配置:

          <!-- cors解决跨域访问问题 -->
        <filter>
            <filter-name>cors</filter-name>
            <filter-class>com.wazn.learn.util.SimpleCORSFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>cors</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    工具类代码:

    package com.wazn.learn.util;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletResponse;
    
    public class SimpleCORSFilter implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("SimpleCORSFilter启动!!!===========");
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            HttpServletResponse res = (HttpServletResponse)response;
            res.setHeader("Access-Control-Allow-Origin", "*");
            res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            res.setHeader("Access-Control-Max-Age", "3600");
            res.setHeader("Access-Control-Allow-Headers", "x-requested-with");
            chain.doFilter(request, response);
        }
    
        @Override
        public void destroy() {
            System.out.println("SimpleCORSFilter结束!!!===========");
        }
    
    }

    这种方法还适用于Servlet中,特别注意的是一定要在Filter动作之前加上这句话,也就是在代码的最前面加上这个话。

    这里有个坑,Spring Boot以前的版本这样设置可以用Filter,但是在1.3.7.RELEASE不能用,所以用第二种方式是万能的。

    推荐使用第二种,也就是以下方法:

    package agriculture_basedata.util;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    @Configuration
    public class CorsConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowCredentials(true)
                    .allowedMethods("GET", "POST", "DELETE", "PUT")
                    .maxAge(3600);
        }
    
    }

    这个方法是万能的

    这里在spring boot项目中应用的,所以没有其他配置文件,复制该代码就好了

  • 相关阅读:
    日志框架1---多种日志门面和日志实现初步了解(转载)
    @Autowired 与@Resource的区别(转)
    Spring 之jdbc模板(JdbcTemplate与NamedParameterJdbcTemplate)
    springMVC中的Controller里面定义全局变量
    spring批量更新数据 ---- BatchPreparedStatementSetter
    easyui树查找
    根据ID和parentID利用Java递归获取全路径名称
    一个统一将数据转换为JSON的方法
    上传图片并限制图片格式和大小
    js上传文件(图片)的格式和大小限制
  • 原文地址:https://www.cnblogs.com/jiangwz/p/8477725.html
Copyright © 2011-2022 走看看