#36447: HttpRequest.get_preferred_type misorders types when more specific 
accepted
types have lower q
--------------------------------------+------------------------------------
     Reporter:  Anders Kaseorg        |                    Owner:  (none)
         Type:  Bug                   |                   Status:  new
    Component:  HTTP handling         |                  Version:  5.2
     Severity:  Normal                |               Resolution:
     Keywords:  preferred media type  |             Triage Stage:  Accepted
    Has patch:  0                     |      Needs documentation:  0
  Needs tests:  0                     |  Patch needs improvement:  0
Easy pickings:  0                     |                    UI/UX:  0
--------------------------------------+------------------------------------
Comment (by Jake Howard):

 I've done some more digging, and I think the current implementation is
 working as expected. Notably, there's this sentence in the RFC:

 > Media ranges can be overridden by more specific media ranges or specific
 media types. If more than one media range applies to a given type, the
 most specific reference has precedence.

 More specific definitions override less specific, even if the quality
 value is higher. This was found and fixed as part of #36411.

 The same example from the previous version of the RFC (7231) has a similar
 example, which is copied verbatim into
 
[https://github.com/django/django/blob/main/tests/requests_tests/test_accept_header.py#L235-L262
 Django's codebase]. If I plug the updated values into the same test case,
 they pass ([https://www.rfc-editor.org/errata/eid7138 besides the final
 case]). Notably, to find the specific entry in the `Accept` header which
 matches the given type, the `.accepted_type` (internal) method should be
 used, rather than `is_preferred_type` (which abstracts these
 considerations away).

 Unfortunately, these RFCs are quite hard to interpret. I've opened a
 [https://forum.djangoproject.com/t/help-wanted-accept-header-
 interpretation/41373 thread on the forum] to collect some more input.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/36447#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/0107019755bc9fb1-c3ff7618-530f-468a-913e-42a0808a4f08-000000%40eu-central-1.amazonses.com.

Reply via email to