etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
194 stars 30 forks source link

Status code 303 mal géré par Hackney et HTTPoison #3463

Closed AntoineAugusti closed 1 year ago

AntoineAugusti commented 1 year ago

Constat

Actuellement une réponse 303 suite à une requête GET dans HTTPoison renvoit une erreur.

Cause

Hackney, dépendance Erlang de HTTPoison considère que répondre une 303 à une requête GET n'est pas valide

https://github.com/edgurgel/httpoison/issues/171#issuecomment-244029927

Ceci n'a pas encore été corrigé.

Bug ou pas ?

La RFC indique

The 303 (See Other) status code indicates that the server is redirecting the user agent to a different resource, as indicated by a URI in the Location header field, which is intended to provide an indirect response to the original request ... This status code is applicable to any HTTP method.

C'est donc un bug à corriger upstream, je ferai une PR ensuite. Comme pour le status code 308 https://github.com/benoitc/hackney/pull/692

AntoineAugusti commented 1 year ago

Pour répliquer en Elixir

$ iex -S mix
iex> HTTPoison.get("https://twisto.opendatasoft.com/api/datasets/1.0/fichier-gtfs-du-reseau-twisto/alternative_exports/https_api_okina_fr_gateway_cae_realtime_anshar_ws_services", [], follow_redirect: true)