跨域请求 笔记(二)设置Access-Control-Allow-Origin允许多域名访问

本文深入探讨了前后端分离项目中常见的跨域问题,详细讲解了两种解决策略:使用通配符允许所有域名访问,以及通过判断请求源设置特定域名访问权限,旨在帮助开发者有效应对跨域挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 对于前后端分离的项目难免会遇到跨域的问题,在设置跨域的问题中有许多需要注意的事情,如本次将要将的设置Access-Control-Allow-Origin使其允许多域名请求。

     (1)使用通配符:

这种方式允许所有域名都可以访问,并不安全,而且这种方式浏览器不能携带cookie信息(携带cookie信息只能使用真实域名,如下面第二中方式)。这种方式只推荐在不带cookie信息的开发中测试使用。代码如下:
 reponse.setHeader("Access-Control-Allow-Origin", "*");

     (2)先判断再设置:

 @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse rep = (HttpServletResponse) response;


        // 设置允许访问当前服务的 多个域名
        String[] allowDomains = {"http://www.toheart.xin","http://192.168.11.213:8080","http://localhost:8080"};
        Set allowOrigins = new HashSet(Arrays.asList(allowDomains));

        //获取发起当前请求的域名
        String originHeads = req.getHeader("Origin");

        // 判断发起当前请求的域名 是否包含在允许访问当前服务的域名之内
        if(allowOrigins.contains(originHeads)){
            //设置允许跨域的配置
            rep.setHeader("Access-Control-Allow-Origin", originHeads);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值