zoukankan      html  css  js  c++  java
  • 后台异常引起前端提示跨域出错

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

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

    3. 尝试解决:
      网上解决方法很多,如下:
      https://www.cnblogs.com/wangyongcun/p/7665687.html

    后台controller如下:

    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;
    }
    

    同时前端代码如下:

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

    结果一样,还是报错...

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

    catch(Exception ex){
        logger.error("参数错误",e);
        // 这里返回null, response.setHeader失效了
        return null;
        // 正确应返回如下
        return response;
    }
    
    1. 原因:
      前端请求参数出错了,导致后台取参异常,然后返回null,导致header失效,跨域失败...
      因为这段代码很久没人维护,很难发现,一直提示前端跨域失败,其实是别的原因。
  • 相关阅读:
    机器学习踩坑之Win10+Ubuntu双系统安装踩坑经验
    面向对象
    模块(三)
    模块(二)
    模块之日志
    包的基础使用
    模块介绍
    递归
    匿名函数与三元表达式
    生成器与迭代器
  • 原文地址:https://www.cnblogs.com/bincoding/p/10174989.html
Copyright © 2011-2022 走看看