zoukankan      html  css  js  c++  java
  • 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;
       }

     

  • 相关阅读:
    文件数据源设置
    维护0material主数据,提示Settings for material number conversion not found
    7.5版本COPA数据源创建转换提示“不允许对象名称为空”
    COPA指标自动创建
    IDEA操作数据库
    Docker(快速实战流程)
    Docker(理论部分小结)
    Docker数据卷挂载相关
    解决pycharm启动updating Python interpreter长时间更新
    IDEA完美配置(shell)linux的命令行工具
  • 原文地址:https://www.cnblogs.com/XueTing/p/13690590.html
Copyright © 2011-2022 走看看