I read this question but it didn\'t answer my question.
To me Headers and Parameters are both dictionaries with the difference that headers is [String : String]>
Here is the list of differences:
They are designed for different purposes. Headers carry meta info, parameters carry actual data.
Server side will automatically un-escape/decode parameter names/values. This does not apply for header names/values.
Header names/values need to be manually escaped/encoded at client side and be manually un-escaped/decoded at server side. Base64 encoding or percent escape is often used.
Parameters can be seen by end-users (query parameters) on URL but headers are hidden to end-users.