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

发布于 2022-09-05 08:34:16 字数 1139 浏览 24 评论 0

有没有办法让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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

踏月而来 2022-09-12 08:34:16

可以试下这样做:

        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");
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文