2016-01-14 54 views
0

我想在浏览器中动态获取Wikipedia网页,以便使用XSLTProcessor进一步处理XHTML。如何使用AJAX获取Wikipedia网页或获取()

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

我试图包含“原点”参数,因为它在https://www.mediawiki.org/wiki/Manual:CORS上声明,但没有成功。

当浏览到该页面时,浏览器获取完整的网页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); 
}); 
+1

也许给吉米威尔士一些钱:)你不能强迫网站提供它尚未配置服务的头。但是,您可以编写自己的服务器端代理来获取内容。 – Pointy

+0

好吧,所以这是不可能的。我想也许我做错了什么。是的,服务器端代理或脚本可以完成这项工作。 – Seb3736

回答

2

不幸的是,这并不工作,因为我不能让维基百科发送“访问控制允许来源”标头在HTTP响应。

不,你不能。维基百科决定他们是否要明确授予在其他站点上运行的JavaScript访问其页面的权限。因为这会允许用户的个人信息泄露(例如登录维基百科页面显示用户的用户名,这可能被用来增强网络钓鱼攻击),但这显然是不希望的。

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

origin是一个HTTP请求头,而不是一个查询字符串参数,并自动包含在交叉起源的XMLHttpRequest /读取请求,而不需要你做什么特别的事情。

+0

感谢您的帮助。在我的问题中关联的MediaWiki页面上的jQuery示例中,他们实际上将源发送为GET请求URL的查询字符串参数,不是吗? – Seb3736

+1

他们这样做,这是奇怪的,不必要的,有点容易出错。 (虽然文档是针对API而不是主要网站的,但它需要在mediawiki配置中列出白色)。 – Quentin