• Java中设置多个Access-Control-Allow-Origin跨域访问


    1、如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全。

    response.setHeader("Access-Control-Allow-Origin","*");

    2、为保证安全性,可以只添加部分域名允许访问,添加位置可以在下面三处任选一个。

    (1)可以在过滤器的filter的dofilter()方法种设置。

    (2)可以在servlet的get或者post方法里面设置。

    (3)可以放在访问的jsp页面第一行。

    3、在此用第一种方法,注意web.xml配置过滤器(filter)。

    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
            // 将ServletResponse转换为HttpServletResponse
            HttpServletResponse httpResponse = (HttpServletResponse) res;
            // 如果不是80端口,需要将端口加上,如果是集群,则用Nginx的地址,同理不是80端口要加上端口
        String []  allowDomain= {"http://www.baidu.com","http://123.456.789.10","http://123.16.12.23:8080"};
        Set allowedOrigins= new HashSet(Arrays.asList(allowDomain));
        String originHeader=((HttpServletRequest) req).getHeader("Origin");
        if (allowedOrigins.contains(originHeader)){
            httpResponse.setHeader("Access-Control-Allow-Origin", originHeader);
                httpResponse.setContentType("application/json;charset=UTF-8");
                httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
                httpResponse.setHeader("Access-Control-Max-Age", "3600");
                httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");
                // 如果要把Cookie发到服务器,需要指定Access-Control-Allow-Credentials字段为true
                httpResponse.setHeader("Access-Control-Allow-Credentials", "true");                                
                httpResponse.setHeader("Access-Control-Expose-Headers", "*");        
            }        
            chain.doFilter(req, res);
    }

    4、以下是我本人亲测。

    转 : https://blog.csdn.net/qq_32625839/article/details/81001125

  • 相关阅读:
    How to solve problems
    【Python】区分List 和String
    【Python】内置方法pop
    【Python】安装配置Anaconda
    【Web crawler】print_all_links
    【Python】多重赋值之值互换
    BNF巴科斯-诺尔范式
    Svn与Git的区别
    python项目部署
    linux每日命令(3):which命令
  • 原文地址:https://www.cnblogs.com/fps2tao/p/13791113.html
Copyright © 2020-2023  润新知