DoH: Improve compatiblity by ignoring an "Accept" HTTP header value
We were too strict regarding the value and presence of
header, slightly breaking compatibility with the specification.
According to RFC8484 client SHOULD add
Accept header to the requests
but MUST be able to handle
application/dns-message media type
regardless of the value of the header. That basically suggests we
ignore its value.
The DoH client SHOULD include an HTTP Accept request header field to indicate what type of content can be understood in response. Irrespective of the value of the Accept request header field, the client MUST be prepared to process "application/dns-message" (as described in Section 6) responses but MAY also process other DNS- related media types it receives.
Besides, verifying the value of the
Accept header is a bit tricky
because it could contain multiple media types, thus requiring proper
parsing. That is doable but does not provide us with any benefits.
Among other things, not verifying the value also fixes compatibility
with clients, which could advertise multiple media types as supported,
which we should accept. For example, it is possible for a perfectly
valid request to contain
*/* in the
Accept header value. Still, we would treat such a
request as invalid.
Depends on !5245 (merged).