Запрос API Википедии с использованием AJAX (XMLHttpRequest)

Я пытаюсь реализовать простой запрос к API Википедии с использованием AJAX (XMLHttpRequest). Если я набираю url в адресной строке Firefox, я получаю аккуратный XML, никакого пота там нет. Тем не менее, вызывая тот же самый URL с:

// this is my XMLHttpRequest object
httpObjectMain.open("GET", "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=kaas", true);
httpObjectMain.send(null);

возвращает пустой ответ. Согласно FireBug, я получаю ответ 200 OK, но содержимое просто пусто.

Я подозреваю, что, возможно, что-то не хватает в заголовке HTTP-запроса GET.

Помощь! (и спасибо!)

Ответ 1

API Wikipedia поддерживает JSONP. Строка запроса будет выглядеть примерно так:

http://en.wikipedia.org/w/api.php?action=query&format=json&callback=test&prop=langlinks&lllimit=500&titles=kaas

Но вам нужно будет построить обработчик jsonp (или вы можете использовать свою любимую библиотеку для этого), переключитесь в формат json для вывода из выбранного вами xml и создайте функцию обратного вызова, чтобы проанализировать результат и сделать то, что вы необходимо на странице.

Ответ 2

Браузер не позволит вам отправлять XHR в другой домен, отличный от того, на котором находится страница. Это делается для целей безопасности.

Один из способов, который я видел, - установить прокси-сервер в домене, на котором размещена страница, которая будет передавать запросы на фактический сервер api. См. http://ajaxpatterns.org/Cross-Domain_Proxy