• springboot跨域的处理方式


    问题描述:

    当请求服务器发送HTTP请求到目标服务器时,如果目标服务器的(协议、域名、端口)与请求服务器(协议、域名、端口)其中一个不同,就会出现跨域异常。

    解决方法:

    1、在applicatio.properties中配置可以访问的域;

    #配置访问的域 
    cors.origin
    =*

    2、然后创建跨域过滤器,在跨域过滤器设置跨域响应头以及可以访问的域;

    import org.springframework.beans.factory.annotation.Value;
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    public class CrossOriginFilter implements Filter {
    
        @Value("${cors.origin}")
        private String origin;
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws
    IOException, ServletException {
            HttpServletResponse httpResponse = (HttpServletResponse) response;
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            httpResponse.setHeader("Access-Control-Allow-Origin", origin);
            httpResponse.setHeader("Access-Control-Allow-Methods", httpRequest.getMethod());
            httpResponse.setHeader("Access-Control-Max-Age", "3600");
            httpResponse.setHeader("Access-Control-Allow-Headers", httpRequest.getHeader("Access-ControlRequest-Headers"));
            chain.doFilter(request, response);
       }
    }

    3、接着编写跨域配置文件

        @Bean
        public CrossOriginFilter crossOriginFilter(){
            return new CrossOriginFilter();
       }
    
        @Bean
        public FilterRegistrationBean getFilterRegistrationBean(){
            FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
            // 设置过滤器
            filterRegistrationBean.setFilter(crossOriginFilter());
            // 拦截路径,以api开头的都会被拦截
            filterRegistrationBean.addUrlPatterns("/api/*");
            // 设置名称
            filterRegistrationBean.setName("CrossOriginFilter");
            return filterRegistrationBean;
       }

     

  • 相关阅读:
    SSH 密钥类型的的选择
    VMware 默认的虚拟交换机关系与VMnet设置
    路由器端口映射不生效的解决方法
    优先使用对象组合,而不是类继承
    权限管理系统之软件注册模块
    如何正确安装phpDocumentor
    IE下cookie跨域问题
    Linux下Apache无法解析.php文件
    用 memcache 来存储 session
    windows7 下 phpunit 安装
  • 原文地址:https://www.cnblogs.com/XueTing/p/13690590.html
Copyright © 2020-2023  润新知