* Another important point to notice is the fact that this algorithm
allows parameter names to appear without values. This is useful in
situations such as the "base64" option in data: URLs that use the mere
presence or absence of a parameter to set its boolean value.
Since you mention data URLs I should note that data URLs can be percent
encoded, which HTTP
and MIME headers can't be. This raises additional considerations when
parsing a data URL's MIME type correctly;
see reference [1] for test cases. In particular:
* A data URL that begins with "data:," or "data:;base64," (with no MIME
type) is assumed to have the MIME type
"text/plain;charset=us-ascii" under RFC2397.
* A data URL that begins with "data:;" (with no type or subtype, but with
parameters) is assumed to have the MIME type
"text/plain" under RFC2397.
* The word "base64" can only appear at the end of the MIME type, so that a
data URL like
"data:application/example;base64;foo=bar,AA==" will not be encoded in
base64, strictly speaking. A parameter name (base64 or otherwise)
cannot otherwise appear without a parameter value.
[1]: http://greenbytes.de/tech/tc/datauri/