Java Web如何设置多个Access-Control-Allow-Origin

新手上路,请多包涵

有没有办法让Access-Control-Allow-Origin header允许设置multiple cross-domains呢?

如果设置

response.addHeader("Access-Control-Allow-Origin","*");
感觉这个接口太开放了,不太安全。 我想只设置自己指定的若干个域名或者端口可以调用接口。
想下面这样:

Access-Control-Allow-Origin: http://www.domain1.com, http://domain2.com
现在我通过这个方式,在filter里面设置头信息。

response.addHeader("Access-Control-Allow-Origin","http://www.domain1.com:9000");
response.addHeader("Access-Control-Allow-Origin","http://www.domain2.com:8080");
但是浏览器报这个错误。

The 'Access-Control-Allow-Origin' header contains multiple values 'http://www.liuxuewei.com:9000, http://www.liuxuewei.com:8080', but only one is allowed. Origin 'http://www.liuxuewei.com:9000' is therefore not allowed access.

阅读 29.7k
1 个回答
新手上路,请多包涵

可以试下这样做:

        String originHeader = request.getHeader("Origin");
        String[] IPs = {"ip1:port1","ip2:port2","ip3:port3"};
        if (Arrays.asList(IPs).contains(originHeader))
        {
            response.setHeader("Access-Control-Allow-Origin", originHeader);
            response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题