Как мы можем использовать JavaScript для междоменного получения веб-страницы без использования XMLHttpRequest?Есть ли плагин, который мог бы сделать это? - PullRequest
1 голос
/ 30 января 2011

при использовании JavaScript очень важно получить некоторые страницы из Интернета, не переходя с текущей страницы и не скрывая их от глаз пользователя.

Чтобы запросить веб-страницу, не показывая ее пользователю, легко использовать XMLHttpRequest, но у него есть свои ограничения, главное, что он не очень хорошо извлекает междоменные страницы. По соображениям безопасности браузеры (в моем случае Mozilla FireFox 3.6+) извлекают заголовок с целевого сайта, и если местоположению реферера разрешен доступ в этом заголовке, только тогда браузер продолжит получать целевую веб-страницу, и JavaScript сможет только тогда анализировать извлеченная информация.

Это заставляет XMLHttpRequest работать с некоторыми страницами и не работать с другими , если вы пытаетесь получить доступ к междоменным страницам. Конечно, это работает хорошо, если вам нужно извлечь информацию из того же места, что и страница-источник, где находится XMLHttpRequest.

Это большая проблема, когда security на самом деле не имеет приоритета 1. Например, представьте, что вы пишете скрипт для извлечения данных в реальном времени с веб-сайта, производящего статистику, или представьте себе бота, который должен извлекать данные с веб-сайта онлайн-игр.

Теперь, как можно использовать JavaScript для получения страниц из других доменов (междоменная ссылка)?

Я подумал, что, возможно, мы могли бы найти плагин, который выполняет эту работу (конечно, после установки с разрешения пользователя), а затем использовать его свойства JS и устранить необходимость в XMLHttpRequest. Знаете ли вы какой-либо такой плагин или другую обходную схему для этой проблемы? (т.е. получать междоменные данные с помощью JS без XMLHttpRequest) конечно, мы не можем использовать XMLHttpRequest, поскольку у нас нет никакого контроля над заголовками целевой страницы, и мы, очевидно, хотим скрыть весь процесс от пользователя

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Вы обнаружите, что приоритет для сайта target в обеспечении собственной безопасности является наиболее важным. Если они не заботятся о JavaScript на других сайтах, обращающихся к их сайту, они могут установить заголовки HTTP Access Control для междоменного домена XMLHTTPRequest, предоставить файл crossdomain.xml для Flash, API JSONP или некоторые хуки для iframe. мониторинг.

Второе решение - отправлять запросы на сервер в вашем домене, который передает запрос на целевой сайт. В определенных обстоятельствах вы можете использовать сторонний сервер, который поддерживает междоменные запросы или запросы JSONP, например Yahoo! Трубы.

Если ни один из этих вариантов не выполним, вам необходимо убедить пользователя разрешить вам запускать собственный код на своем ПК. Это может быть через подписанный Java-апплет, который запрашивает специальные разрешения, или ваши собственные пользовательские плагины или расширения браузера.

1 голос
/ 30 января 2011

Есть несколько способов, включая использование JSONP с XMLHttpRequest, использование Flash и использование iframes.

Вот некоторая информация по этому вопросу.http://snook.ca/archives/javascript/cross_domain_aj

...