自3月24日起,Discourse API响应请求的方式似乎发生了一些变化。
我们这边没有进行任何代码更改,并且Api-Key仍然有效,但是我们一个试图获取用户信息后端服务在访问 users/by-external/{id}.json 时开始失败。
我们向这些请求发送了 Api-Key 和 Api-Username 标头,根据文档,这些标头应该是必需的。这些请求已经正常工作了很多年。
现在,所有发往此端点的请求都以403失败,响应正文如下:
{
"errors": [
"您无权查看所请求的资源。"
],
"error_type": "invalid_access"
}
即使我尝试请求 /u/{username}.json 也会发生这种情况。
令人惊讶的是,当我不发送标头时,这些根据文档需要身份验证标头的请求实际上会响应所请求的数据,就好像已通过身份验证一样。
我也尝试发送了错误的Api-Key,响应会有一个略有不同的消息:
{
"errors": [
"您无权查看所请求的资源。API用户名或密钥无效。"
],
"error_type": "invalid_access"
}
这告诉我密钥被接受了,但错误地报告它没有授予对资源的访问权限,同时却授予了未经身份验证的请求完全访问权限。
我也刚用一个具有所有用户/全局选项的新Api-Key进行了测试,结果相同。