前后端交互跨域,问题处理 ,Access to XMLHttpRequest...but only one is allowed.

在前后端数据交互的时候控制台报错如下。

一般情况下,服务端按如下设置请求头就可以解决跨域问题

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    // 指定允许其他域名访问
    response.setHeader("Access-Control-Allow-Origin", "*");
    // 响应类型
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS, DELETE");
    // 响应头设置
    response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header, HaiYi-Access-Token");
    if ("OPTIONS".equals(request.getMethod())){
    response.setStatus(HttpStatus.SC_NO_CONTENT);
    }
    filterChain.doFilter(servletRequest, servletResponse);
}

最近我们后端做了zuul转发,在zuul这里做了跨域设置,然后做业务的Java页做了跨域的设置,也就是说一共有两次跨域设置。所以会提示。

but only one is allowed.

所以,只要让其中一方撤掉filter就可以了,这里建议保留zuul,的设置。不过最好还是通过nodejs来做一层代理来处理跨域问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值