Можете ли вы установить http-соединение с клиентом из веб-приложения (flash, java)? - PullRequest
0 голосов
/ 30 апреля 2009

Прежде чем прыгнуть обеими ногами и тратить свое время на изучение чего-то, что я не могу использовать для своих нужд, я должен спросить:

Можно ли установить http-соединение с другим веб-сайтом из Java-апплета или из файла флэш-памяти?

Скажем, у меня есть Java-апплет, который хочет загрузить результаты из Google. Даст ли мне JVM доступ к такому вызову? Что насчет Flash? Я читал о URLLoader, но запутался с этим:

"* Загрузка данных не допускается, если вызывающий файл находится в изолированной программной среде с локальной файловой системой, а целевой ресурс находится в сетевой изолированной программной среде. * Загрузка данных также не допускается, если вызывающий файл находится в сетевой изолированной программной среде, а целевой ресурс является локальным. "

В любом случае, если это невозможно, произойдет ли сбой у пользователя без ответа или будет запрошено разрешение?

Большое спасибо.

Ответы [ 5 ]

1 голос
/ 30 апреля 2009

Java, JavaScript, Flash и т. Д. Реализуют некоторую форму политики «того же источника», которая позволяет только ненадежному коду читать с сайта, с которого он был загружен. Один из способов обойти это, в некоторой степени поддерживаемый последними версиями Flash и Java, так как 6u10 - crossdomain.xml (Google it). Это позволяет сайтам разрешать доступ через код, загруженный другими сайтами. Обратите внимание, что для этого требуется сайт, к которому вы хотите получить доступ, чтобы предоставить вам разрешение.

1 голос
/ 30 апреля 2009

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

1 голос
/ 30 апреля 2009

Да, но проблема в том, что из соображений безопасности многие браузеры разрешают приложению подключаться только к домену, из которого поступило приложение.

например, если я захожу на веб-сайт A и мое приложение пытается получить доступ к веб-сайту B, его иногда можно заблокировать (например, чтобы избежать спама, атак и т. Д.). Обходной путь, если вы контролируете веб-сайт A, - это создать на веб-сайте A сценарий «сквозной передачи», который отправит запрос в B.

1 голос
/ 30 апреля 2009

Могу ли я установить http-соединение с другим веб-сайтом из Java-апплета или из файла Flash?

С Flash, да. Вам необходимо ознакомиться с моделью безопасности Flash, чтобы быть уверенным, что вы можете, а что нет. В большинстве случаев это должно остановить несанкционированный доступ и / или XSS или подобные атаки. Например, Flex (связанная технология) не предоставляет вам доступ к вашему диску, в то время как AIR делает это. Выбирай.

Что касается апплетов, вам придется подождать, пока кто-нибудь еще не объяснит вам это. Но AFAIK, у него также есть модель безопасности, которая представляет минимальную угрозу для его пользователей.

1 голос
/ 30 апреля 2009

Конечно, вы можете сделать это на Java, а также flash. Однако некоторые браузеры и среды могут ограничивать, форсируя уровни безопасности.

Найденные вами предупреждения относятся к локальному <-> удаленному устройству. Для веб-приложений, размещенных в сети, вы обычно можете получить доступ к другим сетевым ресурсам. (ну, некоторые могут ограничить вас для «других» доменов - вам нужно проверить модели безопасности)

Но современные технологии обычно предлагают вам сделать это с помощью комбинации JavaScript. Найдите в Google «Ajax» и найдите некоторые фреймворки, которые лучше всего соответствуют вашим требованиям - это сэкономит много времени.

...