javascript - 如何使用 AJAX 或 fetch() 获取维基百科网页

标签 javascript ajax mediawiki wikipedia wikipedia-api

我想在浏览器中动态获取维基百科网页,以便使用 XSLTProcessor 进一步处理 XHTML。

不幸的是,这不起作用,因为我无法让维基百科在 HTTP 响应中发送“Access-Control-Allow-Origin” header 。

我尝试包含 https://www.mediawiki.org/wiki/Manual:CORS 中所述的“origin”参数,但没有成功。

获取完整的网页 HTML 对我来说很重要,因为浏览器在导航到该页面时会获取该 HTML,因此 MediaWiki API 对我来说是不可能的。

这是我尝试过的:

var url = "https://en.wikipedia.org/wiki/Star_Trek?origin=https://my-own-page.com";

fetch(url).then(function(response){
    console.log(response);
});

最佳答案

Unfortunately, this does not work because I can't get Wikipedia to send the "Access-Control-Allow-Origin" header in the HTTP response.

不,你不能。由维基百科决定是否要明确授予其他网站上运行的 JavaScript 访问其页面的权限。

由于这会导致用户的个人信息泄露(例如,登录的维基百科页面会显示用户的用户名,这可用于增强网络钓鱼攻击),因此这显然是不可取的。

var url = "https://en.wikipedia.org/wiki/Star_Trek?origin=https://my-own-page.com";

origin 是一个 HTTP 请求 header ,而不是查询字符串参数,并且会自动包含在跨源 XMLHttpRequest/fetch 请求中,而无需执行任何特殊操作。

关于javascript - 如何使用 AJAX 或 fetch() 获取维基百科网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790558/

相关文章:

javascript - angularjs 最佳实践 - 没有 $rootScope 的指令之间的通信?

javascript - Highcharts 系列格式问题(AngularJs)

javascript - 如何使用普通 JavaScript (ES6) 处理 ajax 请求?

python - 从维基百科页面的类别中获取更一般的类别

mediawiki - 从 MediaWiki 中的页面链接中排除页面的某些部分

javascript - 异步/等待 Vuex 调度

javascript - 克隆 Canvas 不起作用

javascript - jQuery - 如何访问 Ajax 调用显示的对象?

javascript - 使用 fetch 后如何重新加载页面

php - 如何将我的 Heroku + MediaWiki 数据库从clearDB 1 更改为本地数据库