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项目中应用的,所以没有其他配置文件,复制该代码就好了

  • 相关阅读:
    web页面接入QQ客服的方法
    如何使用webapi集成swagger
    TCP的三次握手和四次挥手
    笔记-ASP.NET WebApi
    .net开发人员应该知道的几个网站
    HttpClient在async中产生的代码不执行和堵塞
    【转】CA证书申请+IIS配置HTTPS+默认访问https路径
    WebApi捕捉异常的一套方案
    使用Topshelf部署你的Job
    使用ajax局部更新Razor页面
  • 原文地址:https://www.cnblogs.com/jiangwz/p/8477725.html
Copyright © 2011-2022 走看看