2012-06-30 5 views
1

За исключением YQL, есть ли способ получить ответ от ajax и данные из другого домена без изменения кода на стороне сервера?Как получить ответ ajax из другого домена?

У YQL есть ограничение (1000 звонков в час) для бесплатного пользователя, но большинство людей говорит, что на самом деле это меньше.

ответ

3

Если вы подразумеваете под «без изменения кода на стороне сервера» не модифицирует сервер источника данных, тогда вы можете иметь свой собственный прокси-сервер (в основном, свой собственный сервер YQL) для чтения удаленных данных. Это возможно, потому что серверная сторона не связана с политикой одинакового происхождения.

Таким образом, вы можете AJAX сервер, то пусть ваш сервер прочитать удаленный сервер, используя некоторую форму wget, curl или fopen и вернуть то, что было извлечено:

Remote server <- fopen, curl or wget -> your server <- AJAX -> browser 
+0

спасибо, я знаю этот метод, который вы сказали. но, надеюсь, мне не нужно будет изменять код моей или серверной части сервера данных. есть ли другой бесплатный сервер запросов, такой как YQL? – George

+0

@George, лучше, чтобы вы сделали его на своем собственном сервере. Преимущество этого в том, что вы можете использовать AJAX для запроса своего сервера (того же домена), плюс у вас есть полный контроль над ним (без ограничений по запросу и т. Д.). – Joseph

+0

вы правы. это легче. Однако я только что нашел, что могу использовать функцию yql.multi для загрузки большого количества данных за один вызов. – George

1

Вы можете использовать шаблон IFrame приемника. Это старая техника. См. Secure Cross-Domain Communication in the Browser Дэнни Торпа на MSDN. Вам не нужно использовать JSONP, но все же можете совершать междоменные звонки

+0

Спасибо за ваш ответ. Я думаю, что это решение похоже на метод html5 postMessage. Хотя postMessage не может поддерживать в старых браузерах .... – George

1

Вы можете использовать функцию HTML 5, которая является postMessage для перекрестных доменных вызовов. Опять же, он не поддерживается во всех браузерах. Посмотрите на следующую ссылку для реализации: Cross domain call using postMessage

+0

Спасибо за ваш обмен !!!! Он может решить мою текущую проблему при общении между различными iframe !! – George

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