Conteúdo rolável de cabeçalho e rodapé

Estou tentando criar uma página que contém três divs: um cabeçalho, um rodapé e uma área de conteúdo. Estes devem ocupar 100% da tela.

O cabeçalho e o rodapé são pequenos e não mudam; a área de conteúdo pode ter qualquer tamanho, então eu adicioneioverflow:auto para rolar quando estiver muito grande.

O problema é que ele excede a altura da tela. Eu criei um violino para demonstrar:https://jsfiddle.net/tdxn1e7p/

Estou usando o CSS a seguir para configurar o html e a altura do corpo, para que oheight:100% truque no contêiner funcionará:

html, 
body {
    height: 100%;
}

A estrutura do meu documento é:

<div style="height:100%;">
  <div>
    Header content
  </div>
  <div style="overflow:auto;">
    Body content... this could be very long
  </div>
  <div>
    Footer content
  </div>
</div>

Eu encontrei muitas variações nesse tipo de problema, comoessa questão, mas não consegui fazer nenhuma das respostas funcionar para mim.

questionAnswers(3)

yourAnswerToTheQuestion