We also should validate header semantics and throw an exception if they're not met. There's an RFC somewhere that surely defines them...