温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CORS跨域请求:前后端分离

发布时间:2020-07-16 17:23:27 来源:网络 阅读:2565 作者:海德堡绝尘 栏目:开发技术
  1. 请求过滤器:

    /**
    *  OncePerRequestFilter保证在任何Servlet容器中都是一个请求只执行一次的过滤器。
    */
    public class CorsFilter extends OncePerRequestFilter {
    
    @Override
    protected void doFilterInternal(HttpServletRequest req, HttpServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
        Properties props = PropertiesLoaderUtils.loadAllProperties("cors.properties");
        //允许的 客户端域名
        resp.addHeader("Access-Control-Allow-Origin", props.getProperty("cors.allowed-origins"));
        //允许的 方法名
        resp.addHeader("Access-Control-Allow-Methods", props.getProperty("cors.allowed-methods"));
        //允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
        resp.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,token");
        //预检验请求时间
        resp.addHeader("Access-Control-Max-Age", props.getProperty("cors.max-age"));//30 min
        resp.addHeader("Access-Control-Allow-Credentials", "true");
    
        chain.doFilter(req, resp);
    }
    }

    CORS跨域请求:前后端分离

  2. web.xml中配置跨域过滤器:
    <!--配置跨域请求的过滤器-->
    <filter>
    <filter-name>cors</filter-name>
    <filter-class>com.jd.dashboard.cors.CrossFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

  3. 过滤器中的属性配置如下:
#跨域请求CORS全局配置属性值

#允许访问的客户端域名,例如:http://web.xxx.com
cors.allowed-origins=http://front.xx.com

#允许访问的方法名
cors.allowed-methods=POST, GET, OPTIONS, DELETE

#允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
cors.allowed-headers=Content-Type

#允许客户端访问的服务端响应头
cors.exposed-headers=

#是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true
cors.allow-credentials=true

cors.max-age=1800

由于jsonp只支持GET方式的请求,所以这种方式比较推荐。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI