RFC 7231 建议,缺失 Accept 请求头的请求应被视为 */*,但在未提供该请求头的情况下调用 数据探索查询 的 API POST 端点会返回 406 Not Acceptable。我不确定这是数据探索特有的问题,还是其他 POST 请求也存在此情况。我使用过的所有其他 GET 请求均未遇到此问题。
巧合的是,curl 和 Python 的 requests 库默认会在所有请求中附加 Accept: */*,但 并非所有工具都如此。你可以通过使用空请求头禁用 curl 的默认行为来观察此现象,例如:
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:"
这并非重大问题,但其他工具也可能遇到类似情况……而且这似乎是一个简单的修复,尤其是因为我所使用的其他所有端点在不提供该请求头的情况下都能正常工作。