• springcloud中通过Filter实现微服务跨域访问允许


    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    
    @Component
    @SuppressWarnings("unused")
    public class SimpleCorsFilter implements Filter{
        private Logger logger= LoggerFactory.getLogger(SimpleCorsFilter.class);
    
        @Value("${com.cors}")
        private String cors;
    
        @Value("${com.corsheader}")
        private String corsHeader;
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
            HttpServletResponse response = (HttpServletResponse) res;
            //logger.debug("CORS控制");
            response.setHeader("Access-Control-Allow-Origin", cors);
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Headers", corsHeader);
            response.setHeader("Vary", "Origin");
            if(((HttpServletRequest)req).getMethod().toUpperCase().equals("OPTIONS")){
                return;
            }
            chain.doFilter(req, res);
        }
    
        @Override
        public void destroy() {
    
        }
    }
    
    
    com.cors=* //设值允许访问的域名 * 表示所有
    com.corsheader=authtication,content-type //设值允许传输的header

    Access-Control-Allow-Origin //允许哪些域名跨域
    Access-Control-Allow-Credentials //是否允许cookies传输
    Access-Control-Allow-Headers //允许header中哪些参数传输
    response.setHeader("Vary", "Origin"); //告诉CDN等,响应是基于请求者Origin头值进行协商的。
  • 相关阅读:
    操作系统学习笔记 003 安装SourceInsight
    操作系统学习笔记 002 安装NASM
    操作系统学习笔记 001 安装Ubuntu
    ATmega8仿真——键盘扫描的学习
    Open-Drain&Push-Pull
    ATmega8仿真——LED 数码管的学习
    SSD固态硬盘的GC与Trim
    前缀、中缀、后缀表达式
    动态规划解决01背包问题
    javascript 获取图片原始尺寸
  • 原文地址:https://www.cnblogs.com/keepMoveForevery/p/9549885.html
Copyright © 2020-2023  润新知