2016-01-14 53 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