dfb694a42f
ContentCachingRequestWrapper только cache'ит body ПОСЛЕ того как handler прочитает getInputStream(). Если filter читает body первым (для hash), handler потом получает 'Required request body is missing' — буфер пустой. CachedBodyHttpServletRequest при construction читает body в byte[] и getInputStream() возвращает свежий ByteArrayInputStream при каждом вызове. Filter и handler читают одни и те же байты независимо.