1. 程式人生 > >記一次錯誤“net::ERR_INCOMPLETE_CHUNKED_ENCODING”

記一次錯誤“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沒第一時間找到問題,還是要多從後端程式碼定位!