场景:
系统A:nodejs+vue.js
系统B:spring boot
经过系统A前端调用系统B,一直提示:No 'Access-Control-Allow-Origin' header is present on the requested resourcejavascript
定位问题:
js跨域问题,很好定位html
尝试解决:
网上解决方法不少,以下:
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; }