这几天在写代码遇到一些莫名奇妙的bug,在这里记录一下。
1.Cookie设置不了问题
我写的设置Cookie接口,在本地postman调用时是正常的,但是前端调用时就是写不进Cookies里面。在网上也看了很多博文,都试过没啥用。
最后怎么解决的?我把@GetMapping,换成了@PostMapping...笑死,根本笑不死。
2.Cookie的配置
// 新建一个Cookie对象
Cookie cookie = new Cookie(cookieName, encodeCookieValue);
// 设置cookie的生存时间
cookie.setMaxAge(cookieConfig.getMaxAge());
// 通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容
cookie.setHttpOnly(true);
// 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证
cookie.setSecure(true);
// 可以在webapp文件夹下的所有应用共享cookie
cookie.setPath("/");
// 跨域共享cookie
cookie.setDomain(".baidu.com");
3.前端调用接口不携带Cookie问题
前端调用我的接口没成功,F12看对应接口Headers下的Request-Header下的Cookie居然没有值。。。这个问题我也是找了半天,后来发现前端忘加跨域设置。
:with-credentials="true"
4.前端数据不回显,国内站点正常回显,但是海外站点不回显。。。
这个问题找了我一天,线上的问题非常难定位,我后端接口返回了数据,但是前端就是拿不到,我看了前端的逻辑没有错。问题出在哪呢?TTFB!
既然不是后端数据返回的问题,那就是前端或者其他的问题。我对比了国内站点和海外站点的接口调用顺序,发现了国内站点有A接口总是调用在B接口之前,B接口需要查询的是A接口的返回的值。所以顺序是正确的。但是海外站点,可能是数据库连接问题,A接口的TTFB时间长,而B接口有兜底逻辑。导致海外站点B接口先于A接口调用。一直走兜底逻辑,数据回显就不正常了。
怎么解决?前端写一个监视器,当A接口有数据了再调用B接口。。。
好文链接
发表评论