后台异常引发前端提示跨域出错

  1. 场景:
    系统A:nodejs+vue.js
    系统B:spring boot
    经过系统A前端调用系统B,一直提示:No 'Access-Control-Allow-Origin' header is present on the requested resourcejavascript

  2. 定位问题:
    js跨域问题,很好定位html

  3. 尝试解决:
    网上解决方法不少,以下:
    http://www.javashuo.com/article/p-vmfhiwmc-ey.html前端

后台controller以下:vue

try{
    response.setHeader("Access-Control-Allow-Origin", "*");
    String request = new String(HttpUtils.stream2Bytes(requestBody.getInputStream()),"UTF-8");
catch(Exception ex){
    logger.error("参数错误",e);
    return null;
}

同时前端代码以下:java

this.$http.post({
                url: server,
                params: submitData,
                successCallback: (rs) => {
                    var result = JSON.parse(message);
                    this.addChatMsg(result.data.msg, () => {
                        this.$refs.common_chat.goEnd();
                    });
                }
            });

结果同样,仍是报错...node

后面反复查看nginx, spring日志,发现一个小细节nginx

catch(Exception ex){
    logger.error("参数错误",e);
    // 这里返回null, response.setHeader失效了
    return null;
    // 正确应返回以下
    return response;
}
  1. 缘由: 前端请求参数出错了,致使后台取参异常,而后返回null,致使header失效,跨域失败... 由于这段代码好久没人维护,很难发现,一直提示前端跨域失败,实际上是别的缘由。
相关文章
相关标签/搜索