2016-01-14 5 views
0

Я хочу динамически извлекать веб-страницу Википедии в браузере, чтобы продолжить обработку XHTML с помощью XSLTProcessor.Как получить веб-страницу Википедии с помощью AJAX или fetch()

К сожалению, это не работает, потому что я не могу заставить Википедию отправлять заголовок «Access-Control-Allow-Origin» в ответе HTTP.

Я попытался включить параметр «происхождение», как указано на https://www.mediawiki.org/wiki/Manual:CORS, но безуспешно.

Для меня важно получить полный HTML-код веб-страницы, поскольку он получен браузером при навигации по этой странице, поэтому API MediaWiki для меня не может быть и речи.

Это то, что я пробовал:

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

К сожалению, это не работает, потому что я не могу получить Wikipedia послать заголовок "Access-Control-Allow-Origin" в ответ HTTP ,

Нет, вы не можете. Википедия должна решить, хотят ли они явно предоставлять разрешение на работу JavaScript на других сайтах на своих страницах.

Так как это приведет к утечке личной информации пользователей (например, на страницах Википедии, зарегистрированным на странице Википедии, будет отображаться имя пользователя пользователя, которое может быть использовано для усиления фишинг-атаки), это явно что-то нежелательное.

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

origin является запрос HTTP заголовка, а не параметр строки запроса, и автоматически включается в поперечному происхождения XMLHttpRequest/получать запросы без необходимости делать что-нибудь особенное.

+0

Спасибо за anwer. В примере jQuery на странице MediaWiki, которую я связал в своем вопросе, они действительно отправляют исходное значение в качестве параметра строки запроса URL-адреса запроса GET, не так ли? – Seb3736

+1

Они делают, что причудливо, не нужно и несколько склонны к ошибкам. (Эта документация для API не является основным сайтом, но требует, чтобы источник был белым, указанным в конфигурации mediawiki). – Quentin

Смежные вопросы