API POST-Anfrage ohne Accept-Header gibt 406 zurück

RFC 7231 schlägt vor, dass eine Anfrage ohne Accept-Header als */* behandelt werden sollte. Wenn man jedoch das API-POST-Endpunkt für eine Data Explorer-Abfrage ohne diesen Header aufruft, wird 406 Not Acceptable zurückgegeben. Ich bin mir nicht sicher, ob dies spezifisch für den Data Explorer ist oder auch für andere POST-Anfragen gilt. Alle anderen GET-Anfragen, die ich verwendet habe, hatten dieses Problem nicht.

Es kommt so, dass curl und Pythons requests standardmäßig Accept: */* an alle ihre Anfragen anhängen, aber nicht alle Tools dies tun. Dieses Verhalten lässt sich beobachten, indem man den Standard von curl mit einem leeren Header deaktiviert, z. B.

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

Keine große Sache, aber es könnte auch andere Tools betreffen … und es scheint eine einfache Korrektur zu sein, besonders da alle anderen von mir verwendeten Endpunkte ohne diesen Header funktionieren.

2 „Gefällt mir“

Dies stammt höchstwahrscheinlich aus dem Rails-Stack (nicht aus Discourse) und ist wahrscheinlich schwierig zu umgehen.

Ich sehe einige Assertions in Actionpack für den Status 406.

Ich werde dies vorläufig als #feature neu kategorisieren, da es eine einfache Umgehungsmöglichkeit gibt und dies in Rails offenbar beabsichtigt ist.

1 „Gefällt mir“