AJAX на внешний хост
Вопрос следующий: Как сделать аякс на внешний хост? У меня проблема с browser security. На внешний хост не пускает...
Делаешь аякс на свой хост. Со своего хоста запрашиваешь внешний хост. В ответ клиенту возвращаешь данные полученные с внешнего хоста.
Перефразировал. :)
Вопрос следующий: Как сделать аякс на внешний хост? У меня проблема с browser security. На внешний хост не пускает...
всё правильно, так и должно быть. иначе что же это за бардак полчается??? непонятно кто шлёт непонятные запросы непонятно куда... а ты сидишь перед моником, и тупо смотришь, как пакеты мимо тебя летают. бред.
Сделать аякс на свой скрипт, который дернет внешний хост в целом то можно, но не мне. Речь идет именно о том как сделать AJAX на внешний хост, не используя серверную сторону.
Хорошо когда сервис который ты собираешься дергать поддерживает jsON, тогда в принципе AJAX и не нужен вовсе. Но тут возникает целая куча связанного с этим геморроя (например, баг Safari с динамическим добавлением элементов script).
А что ели сервис не поддерживает jsON? Тогда надо дергать именно аяксом, и тут возникают security limitations.
Как быть?
А насчёт разруливания ограничения прав могу предложить только написание своего браузера, который вообще не будет устанавливать подобных ограничений. Или разрешат, если его попросят. Только вот пользовать такой браузер мало кто захочет.
Так вот с Flickr все просто, они поддерживают jsON (хотя это опять таки не решает проблему полностью из-за бага в Safari - динамически не подгружаются скрипты). А с Youtube вообще гнилое дело они даже jsON не провайдят... Там надо именно AJAX юзать.... Ну и как вы понимете никакой AJAX на внешние хосты ломиться не хочет...
PHP не могу юзать из-за технических ограничений. Скриптик дергающий курлом внешний хост - 20 строчек со всеми необходимыми наворотами, но тем не менее юзать мне его нельзя...
Пишите ActiveX который будет запрашивать данные. Только тогда придется забыть о зверях вроде Safari, Opera и ФФ.
Либо пишите серверный кусок который будет дергать все что нужно и скармливать результат клиенту.
Других вариантов нет. А то что вы путаете JSON и AJAX - грустно. JSON, XML - это типы представления данных. AJAX - комплексная технология передачи данных.
Можно вообще не использовать ни JSON, ни XML и счастливо при этом жить.
Резюмирую: AJAX на другой хост невозможен.
ты его расстроил... блаженство в неведении!
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
} catch(e) {}
Для Оперы вообще никак этого не сделать, а в IE это разрешается в настройках
А то что вы путаете JSON и AJAX - грустно. JSON, XML - это типы представления данных. AJAX - комплексная технология передачи данных.
Можно вообще не использовать ни JSON, ни XML и счастливо при этом жить.
Я просто немного не верно выразился и как результат вы меня не верно поняли... Я прекрасно понимаю что AJAX и jsON это как спички и ложка. Дело в том что когда я упоминал jsON то имел в виду некий способ который я сейчас использую для внешних запросов.
Работает это дело так: на странице динамически скриптом создается новый script элемент. Затем этому элементу назначается некий src (url, который я хочу дернуть). В момент определения src происходит внешний запрос (в том числе и на внешний хост). Соответсвенно на мой запрос сервер возвращает некий JS примерно такого вида: someFunction(... jsON object goes here ...). Этот код выполняется браузером и если у меня определена функция someFunction, то она вызовется с один параметром - jsON объектом. Таким образом у меня получается запрос на внешний хост с получением респонса в виде jsON объекта.
Но тут есть одна трудность: Сафари по назначению src для script элемента не предпринимает никаких действий. Т.е. во всех нужных браузерах кроме Сафари запросы шлются на ура.
Вопрос в том как это побороть?
На сколько мне подсказывает гугла это вполне известный баг Сафари, который пофикшен в версии 3.0. Тем не менее подавляющее большинство серферов пользующих Сафари пока сидят под 2-ой версией (она была в Tiger), а третья (она вошла в Leopard) пока не особо распространена. Так что надо как-то эту проблему решать. Вот я и решил узнать может все-таки есть способ сделать аякс на внешний хост без сервер-сайд скриптинга.
Мне нравится этот подход... Мы не ищем легких путей :D
Может кто-то знает как разрулить проблему в Сафари (динамическия подгрузка JS) ?
Пишите ActiveX который будет запрашивать данные. Только тогда придется забыть о зверях вроде Safari, Opera и ФФ.
Либо пишите серверный кусок который будет дергать все что нужно и скармливать результат клиенту.
Других вариантов нет. А то что вы путаете JSON и AJAX - грустно. JSON, XML - это типы представления данных. AJAX - комплексная технология передачи данных.
Можно вообще не использовать ни JSON, ни XML и счастливо при этом жить.
Резюмирую: AJAX на другой хост невозможен.
AJAX как технология возможен на другой хост...
другое дело что такое браузер секурити :)....
другое дело что такое браузер секурити :)....
суть проблемы это не меняет
scriptNode.type = "text/javascript";
scriptNode.src = src;
document.getElementsByTagName('head')[0].appendChild(scriptNode);
Сафари не обрабатывает подгружаемый скрипт если его аппендить не в head.