记一次错误“net::ERR_INCOMPLETE_CHUNKED_ENCODING”

  1. 前端找我: qa环境(老)能用 dev环境(新)不能用。好像是个跨域问题.
    具体表现为发送了个 option后,不继续发post了

  2. 没多想,看了下代码。感觉不应该是个跨域问题。不过还是改成了allow *

  3. 改了后没用

  4. 感觉是代码问题,因为老环境OK,新环境不行。然而同样代码的另一个新环境又可用???

  5. 想到可能是前端问题,于是看console,发现报错:

    failed to load resource net::err_incomplete_chunked_encoding chrome

  6. 百度, 各种千奇百怪的答案,nginx磁盘满了、chrome的自身问题、tomcat版本问题…

  7. 还是觉得应该是后端问题,认定应该是新老环境之间web的一些配置变化导致。

  8. compare两个分支的代码。发现web.xml新加了filter。于是去掉filter

  9. 问题解决

  10. 追踪问题.本地调试,发现是之间已经发现的坑.就是字符集编码的问题

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没第一时间找到问题,还是要多从后端代码定位!

你可能感兴趣的:(小技巧)