Сканирование Ajax.request url напрямую ... ошибка разрешения - PullRequest
0 голосов
/ 07 февраля 2009

Мне нужно сканировать веб-доску, которая использует ajax для динамического обновления / скрытия / показа комментариев без перезагрузки соответствующего поста. Я заблокирован этой областью комментариев.

В Ajax.request, URL указывается с путем без имени хоста, как это:

new Ajax(**'/bbs/comment_db/load.php'**, {
    update       : $('comment_result'), 
    evalScripts  : true, 
    method       : 'post', 
    data         : 'id=work_gallery&no=i7dg&sno='+npage+'&spl='+splno+'&mno='+cmx+'&ksearch='+$('ksearch').value,
    onComplete   : function() {
        $('cmt_spinner').setStyle('display','none');  
        try { 
            $('cpn'+npage).setStyle('fontWeight','bold'); 
            $('cpf'+npage).setStyle('fontWeight','bold');
        } catch(err) {} 
    }
}).request();

Если я пытаюсь получить доступ к URL с полным именем хоста, Я только что получил сообщение: «Ошибка разрешения»:

new Ajax(**'http://host.name.com/bbs/comment_db/load.php'**, {
    update      : $('comment_result'), 
    evalScripts : true, 
    method      : 'post', 
    data        : 'id=work_gallery&no=i7dg&sno='+npage+'&spl='+splno+'&mno='+cmx+'&ksearch='+$('ksearch').value,
    onComplete  : function() {
        $('cmt_spinner').setStyle('display','none');  
        try { 
            $('cpn'+npage).setStyle('fontWeight','bold'); 
            $('cpf'+npage).setStyle('fontWeight','bold');
        } catch(err) {} 
    }
}).request();

приведет к той же ошибке.

Это то же самое, даже когда я вызываю фактический URL-адрес php в веб-браузере следующим образом: http://host.name.com/bbs/comment_db/load.php?'id=work_gallery&..'

Я полагаю, что модуль php ограничен для вызова по URL на том же хосте.

Есть идеи для сканирования этих данных?

Заранее спасибо.

- голень

Ответы [ 4 ]

1 голос
/ 07 февраля 2009

Кросс-сайт XMLHttpRequest запрещен большинством браузеров. Если вы хотите сканировать разные сайты, вам нужно будет выполнить это на стороне сервера.

1 голос
/ 08 февраля 2009

Как упомянул Дэрин, у объекта XMLHttpRequest (который является сущностью запросов Ajax) есть ограничения безопасности при вызове межсайтовых HTTP-запросов, я считаю, что он называется «Политика единого источника для JavaScript».

Хотя в W3C существует рабочая группа, предложившая новую рекомендацию Контроль доступа для межсайтовых запросов , ограничение по-прежнему остается в силе для большинства основных браузеров.

Я нашел некоторую информацию в Mozilla Developer Network , которая может дать лучшее объяснение.

В вашем случае кажется, что вы используете платформу Prototype JavaScript, где Ajax.Request все еще использует объект XMLHttpRequest для своих запросов Ajax.

0 голосов
/ 04 октября 2010

Я бы решил эту проблему, запустив PHP-скрипт локально, который будет выполнять сканирование с внешних страниц. Таким образом, jQuery не должен переходить во внешний домен.

0 голосов
/ 07 февраля 2009
method:'post'

вполне может быть вашей проблемой: хост, обслуживающий запрос, скорее всего, отклонит get запросы, и это все, что вы можете добавить в адресную строку браузера. если это то, что происходит, вам нужно найти или установить какой-нибудь инструмент для написания сценариев, способный выполнить эту работу (я бы выбрал perl, и если вы не используете Windows, у вас это уже есть).

Мне действительно интересно, законно ли то, что вы пытаетесь сделать: траление баз данных комментариев других сайтов обычно не поощряется.

...