dev@trafficserver.apache.org:

The current master (10.x) branch has HTTP/2 to origin support. The HTTP/2
protocol has officially removed reason phrases from the RFC:
https://www.rfc-editor.org/rfc/rfc7540.html#section-8.1.2

HTTP/2 does not define a way to carry the version or reason phrase that is
> included in an HTTP/1.1 status line.


I noticed recently that in the situation where the client talks HTTP/1.1 to
ATS while ATS has negotiated HTTP/2 to the origin, ATS faithfully proxies
an "empty" reason phrase from the HTTP/2 origin to the HTTP/1 client. Per
the HTTP/1 RFC, an empty reason phrase is technically valid:
https://www.rfc-editor.org/rfc/rfc7230#section-3.1.2

A client SHOULD ignore the reason-phrase content.
>      reason-phrase  = *( HTAB / SP / VCHAR / obs-text )


However in discussing this with some other devs, some raise reasonable
concerns about clients not handling the empty phrase correctly.

So I invite feedback. Which of the following should ATS do:

   - ATS remain as is and return an empty reason string. The logic being
   that this is the most technically correct direction: there is no reason
   phrase from the server, an empty reason phrase is valid HTTP/1.x, and -
   since there is no hard and fast specified mapping of reason strings to
   status codes - there's no deterministic way to conjecture what reason
   phrase any particular server would use.
   - Or, to anticipate clients that will have issues parsing an empty
   reason phrase, we map default reason phrases to response status codes. We
   can use https://www.rfc-editor.org/rfc/rfc7231#section-6.1 and/or
   https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
   for this default mapping.

Thanks,
Brian

-- 
"Come to Me, all who are weary and heavy-laden, and I will
give you rest. Take My yoke upon you and learn from Me, for
I am gentle and humble in heart, and you will find rest for
your souls. For My yoke is easy and My burden is light."

    ~ Matthew 11:28-30

Reply via email to