Not all messages were self-descriptive, but self descriptive messages was a goal
Early versions of HTTP, didn't send a complete URI, but assumed the host and port
Use of single level MIME encoding instead of a layered encoding scheme for representations. The key missing thing was the ablity to determine the type of nested content without decoding the data. Also a separation between content and transfer encodings resulted.
Difficulty in communicating characteristics of the representation during content negotiation. Leads to coarse grained communication
Inability to differentiate nonauthoritative responses (responses from intermediaries as opposed to origin servers)
Use of cookies instead of anonymous authentication plus true client side state
MIME syntax is unsuited for HTTP because it assumes a lossy transport