使用MediaWiki REST API调用compare接口时遭遇403错误
注意: API中的该Bug现已修复,此问题不再出现。
问题:MediaWiki REST API跨域调用/compare路由返回403错误
我正在开发一个工具,调用MediaWiki REST API的修订版本对比接口来展示维基百科修订差异。
以下是获取目标JSON数据的示例代码:
const url = "https://en.wikipedia.org/w/rest.php/v1/revision/1157633768/compare/1157658266"; let json = await fetch(url).then(resp=>{ return resp.json(); }); console.log(json)
这段代码在本地Node REPL、维基百科页面的浏览器控制台中均可正常运行,直接用curl访问该URL也能获取数据。
但在我自己的网站中运行相同代码(或在非维基域名的页面浏览器控制台中运行)时,会收到403错误,具体信息如下:
GET https://en.wikipedia.org/w/rest.php/v1/revision/1157633768/compare/1157658266 403{error: 'rest-cross-origin-anon-write', httpCode: 403, httpReason: 'Forbidden'}
错误提示显示因跨域匿名写入被禁止,但我发起的是只读请求。根据API文档,403错误表示“修订版本未公开可访问”,但该内容显然是公开的,无需认证即可通过浏览器或curl访问。
[注:调用该API的其他接口(比如获取单个修订版本详情,URL为https://en.wikipedia.org/w/rest.php/v1/revision/1157633768/bare)时不会出现此错误,仅请求{from}/compare/{to}路由时触发。]
我尝试按照MediaWiki Action API的跨域请求说明,在URL后添加?origin=*,虽知这是不同API,但仍尝试解决问题,结果无效。
我对跨域请求了解不多,但认为这应该是简单的只读请求,无需认证,却遇到该问题。
内容的提问来源于stack exchange,提问作者postylem
相关产品推荐
相关产品推荐

