HTTP has too many ways to do things.
For example, to communicate some data to the server you can use:
- subdomains
- URL paths
- URL query strings
- headers
- body (which can be encoded in multiple ways and supposedly you have to tell the server what you're using with a header)
And when you get a response you have to check these places for information
- status code
- headers
- if it's a redirect you have to make another request and repeat the process
- body (which can be encoded in multiple ways and supposedly you have to check the headers to find out, and yet it may be incorrectly encoded)