Solicitud POST de API sin encabezado Accept devuelve 406

RFC 7231 sugiere que una solicitud sin el encabezado Accept debe tratarse como */*, pero al llamar al endpoint POST de la API para una consulta del explorador de datos sin dicho encabezado se devuelve 406 Not Acceptable. No estoy seguro de si esto es específico del explorador de datos o si también se aplica a otros POST. Todas las demás peticiones GET que he usado no han tenido este problema.

Resulta que curl y las librerías requests de Python añaden Accept: */* a todas sus solicitudes de forma predeterminada, pero no todas las herramientas lo hacen. Puedes observar este comportamiento deshabilitando el valor predeterminado de curl con un encabezado vacío, por ejemplo:

curl -X POST "https://discourse.example.com/admin/plugins/explorer/queries/26/run" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: <your_all_users_api_key>" \
-H "Api-Username: system" \
-H "Accept:"

No es algo grave, pero podría ser un problema que afecte a otras herramientas… y parece que podría ser una solución sencilla, especialmente porque todos los demás endpoints que he usado funcionan sin él.

2 Me gusta

Esto muy probablemente proviene de la pila de Rails (no de Discourse) y es muy probable que sea complicado de solucionar.

Puedo ver algunas aserciones en actionpack para el estado 406.

Voy a recategorizar esto como #feature por ahora, ya que existe una solución trivial y parece ser intencional en Rails.

1 me gusta