You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:24:54