Description
The spec as currently drafted relies on STD66's notion of percent-encoding IDs. That encoding scheme has some deliberate ambiguity in terms of what specific string should result from encoding.
For example, although some characters (e.g. \
) MUST be percent-encoded, any character MAY be percent-encoded. This means that an MDQ responder MUST regard the following as equivalent:
foo:bar
foo%3Abar
The A
to F
characters in the encoding MAY also appear as a
to f
without changing the semantics. STD66 says that encoders "should" (note, not even SHOULD) use upper case, but the result is that an MDQ responder MUST regard the following as equivalent:
foo%2fbar
foo%2Fbar
This is easy for an "active" MDQ responder implementation to deal with. It's harder for people who are trying to implement MDQ by just putting a set of carefully named files behind a standard web server.
In practice, most encoders appear to use upper case. It's not guaranteed, though, and this may cause compatibility issues. It's probably worth at least highlighting this behaviour in the MDQ base spec. I don't think it's worth profiling STD66 within MDQ such that upper case is required (and over-encoding is forbidden) but that might be a discussion to have.