| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: X технологии > Ajax, ограничение загрузки только с текущего хоста |
| Автор: silvek 8.4.2008, 19:46 |
| Добрый день! Я программирую аякс-приложение. Смысл которого заключается в загрузке информации с удаленных серверов, взаимодействии с пользователем. Ограничение аякса(или java-script) в том, что оно примет данные только если хост отправителя тот же что и текущий. Т.е. если мы взяли данные с этого же сайта. Мне требуется проводить обмен данными с другими серверами(которые предоставляют разные службы). Итого, вопрос: как обойти указанное ограничение или как сделать аякс приложение, которое смогло бы взаимодействовать с удаленными узлами в интерактивном режиме(а не только загрузка данных)? |
| Автор: mishaSL 8.4.2008, 19:56 |
| Думаю такой вариант должен работать безотказно: Перетранслировать запросы на другие сервера через свой сервер. Т.е. посылаете запрос на свой сервер, а там уже куда нужно обращаетесь. |
| Автор: silvek 8.4.2008, 20:01 |
| Да, это я прекрасно понимаю =) Но это неудобно. Клиенты должны вставить небольшой код на сайт(как статистики счетчик) и работать с приложением. Указанный вариант я рассматривал, но он доставит клиенту дополнительные затруднения, тем более это по соображениям безопасности не каждый позволит сделать. Я ищу решение обхода огрничения на JS, без применения обходных путей на том же сервере. Решение должно быть! |
| Автор: solenko 8.4.2008, 20:20 |
| Что-то я не могу понять в чем проблемма... Вы хотите предоставлять некий сервис, т.е. пользоватьель, вставляя ваш код, должен получать возможность работы с вашим сайтом. Ну так если js загружен с вашего сайта, то и для системы безопасности он будет "своим". Ну а если нужно работать со стороними сайтами, то все зависит от них. У многих сайтов, ориентированных на предоставление сервисов есть JSON интерфейс. |
| Автор: silvek 9.4.2008, 00:26 |
| Проблема начинается когда я хочу вставить полученный код в див или еще куда. Для первой загрузки именно таким образом я и загружаю код. ЗАтем если я хочу по нажатию на ссылку загрузить еще чегонибудь я использую скрытый фрейм по типу <a href=PATH target=hidden_frame_name>load something</a> Вот теперь результат запроса без перезагрузки страницы попадет в скрытый фрейм. Но нам надо вывести его на страницу из фрейма. Для этого я использую конструкцию вида parent.return_data('ЗДЕСЬ ПОЛУЧЕННЫЙ ХТМЛ КОД'); Так вот такая конструкция(опытным путем доказано) работает на страничках того же хоста и не работает на других хостах. Что же мне делать? |
| Автор: Fortop 9.4.2008, 00:29 |
| Пусть пользователь разместит скрипт на том хосте где он должен работать. |
| Автор: silvek 9.4.2008, 00:34 | ||
| Могу доказать свои слова так: Вот код для вставки(к примеру):
Вы можете вставить его в любую вашу хтмл страницу даже на локальной машине и он загрузит "первую" страничку. Далее если нажать "Скачать случайную цитату", он уже не вернет ничего. Хотя совершенно такой же код, размещенный на том же сервере сработает http://k.mytools.su/ajax/test/ . Почему так? (Зайду с другой стороны вопроса.) Добавлено через 1 минуту и 9 секунд Fortop, ну это, я повторюсь, не самое удобное решение. Хотя, если я буду в тупике - выбора у меня не будет. |
| Автор: skyboy 9.4.2008, 00:55 |
вопросы безопасности. установить значение value у input type="file" прочитать файл на компьютере пользователя загрузить при помощи XKMHTTPRequest данніе с другого домена Это все нереализуемо на "обычном" браузерном javascript. не могу заявить, что везде так(вполне вероятно, что некоторые "дырявые" версии браузеров не проверяли на соответствие домен, куда идет запрос, и текущий домен), но думаю, что стоит найти другое решение(означенный вариант с работой через свой сервер, на самом деле, не так уж и "сложен"; я, по крайней мере, сложности не вижу), чем городить непонятные огороды для 1% всех возможных версий всех браузеров. |
| Автор: Fortop 9.4.2008, 01:08 | ||
У тебя всего 2 варианта, и все их перечислили. Так что выбирай. |
| Автор: ksnk 9.4.2008, 07:37 | ||
А дело не может быть в кэшировании странички? если посмотреть обмен заголовками с сервером, не станет яснее? |
| Автор: silvek 9.4.2008, 09:35 |
| Ок, всем спасибо! Буду использовать систему с работой через свой же сервер. ksnk, нет. Везде посылаются антикеш заголовки. |