前端找我: qa环境(老)能用 dev环境(新)不能用。好像是个跨域问题.
具体表现为发送了个 option后,不继续发post了没多想,看了下代码。感觉不应该是个跨域问题。不过还是改成了allow *
改了后没用
感觉是代码问题,因为老环境OK,新环境不行。然而同样代码的另一个新环境又可用???
想到可能是前端问题,于是看console,发现报错:
failed to load resource net::err_incomplete_chunked_encoding chrome
百度, 各种千奇百怪的答案,nginx磁盘满了、chrome的自身问题、tomcat版本问题…
还是觉得应该是后端问题,认定应该是新老环境之间web的一些配置变化导致。
compare两个分支的代码。发现web.xml新加了filter。于是去掉filter
问题解决
追踪问题.本地调试,发现是之间已经发现的坑.就是字符集编码的问题
1.new String(charArrayWriter.toCharArray()).getBytes();
//这句代码如果byte没有指定编码,而且是中文,则会报错String index out of range -1.
2.Map respMap = JSON.parseObject(responseCopier.getBytes(), Map.class);
改:
public byte[] getBytes() {
try {
return new String(charArrayWriter.toCharArray()).getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
return new String(charArrayWriter.toCharArray()).getBytes();
}
}
问题解决.
总结
遇到过N多次小问题,各种迷,但最后99%基本上都是后端埋的BUG。
因此遇到BUG没第一时间找到问题,还是要多从后端代码定位!
3746





